{"format": 1, "version": {"branch": "17", "url": "/wiki/versions/17/", "state": "supported", "state_label": "Supported", "tag": "", "build": "17.11", "first_release": "2024-09-26", "end_of_life": "2029-11-08", "latest_release_date": "2026-08-13", "manual_url": "/docs/17/index.html", "manual_slug": "17", "manual_pages": 1146, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 12, "entry_count": 727, "initial": {"version": "17.0", "build": "17.0", "status": "stable", "date": "2024-09-26", "source_as_of": "", "url": "/docs/compare/?release=17.0", "manual_url": "/docs/17/release-17.html", "source_url": "/docs/release/17.0/", "entry_count": 182, "categories": {"compatibility": 17, "feature": 154, "bugfix": 2, "performance": 9}, "compatibility_count": 17, "cves": [], "cve_count": 0}, "latest": {"version": "17.11", "build": "17.11", "status": "stable", "date": "2026-08-13", "source_as_of": "", "url": "/docs/compare/?release=17.11", "manual_url": "/docs/17/release-17-11.html", "source_url": "/docs/release/17.11/", "entry_count": 109, "categories": {"security": 29, "bugfix": 49, "improvement": 31}, "compatibility_count": 0, "cves": ["CVE-2025-8714", "CVE-2026-14662", "CVE-2026-14663", "CVE-2026-14664", "CVE-2026-14666", "CVE-2026-14668", "CVE-2026-14669", "CVE-2026-14670", "CVE-2026-14671", "CVE-2026-14672", "CVE-2026-14673", "CVE-2026-14676", "CVE-2026-14677", "CVE-2026-14678", "CVE-2026-14679", "CVE-2026-14680", "CVE-2026-14681", "CVE-2026-15741", "CVE-2026-15742", "CVE-2026-16238", "CVE-2026-16239", "CVE-2026-16241", "CVE-2026-18024", "CVE-2026-18408", "CVE-2026-19385", "CVE-2026-6464", "CVE-2026-6469", "CVE-2026-6470", "CVE-2026-6471", "CVE-2026-6473", "CVE-2026-6637"], "cve_count": 31}, "comparison_url": "/docs/compare/?from=17.0&to=17.11"}, "releases": [{"version": "17.11", "build": "17.11", "status": "stable", "date": "2026-08-13", "source_as_of": "", "url": "/docs/compare/?release=17.11", "manual_url": "/docs/17/release-17-11.html", "source_url": "/docs/release/17.11/", "entry_count": 109, "categories": {"security": 29, "bugfix": 49, "improvement": 31}, "compatibility_count": 0, "cves": ["CVE-2025-8714", "CVE-2026-14662", "CVE-2026-14663", "CVE-2026-14664", "CVE-2026-14666", "CVE-2026-14668", "CVE-2026-14669", "CVE-2026-14670", "CVE-2026-14671", "CVE-2026-14672", "CVE-2026-14673", "CVE-2026-14676", "CVE-2026-14677", "CVE-2026-14678", "CVE-2026-14679", "CVE-2026-14680", "CVE-2026-14681", "CVE-2026-15741", "CVE-2026-15742", "CVE-2026-16238", "CVE-2026-16239", "CVE-2026-16241", "CVE-2026-18024", "CVE-2026-18408", "CVE-2026-19385", "CVE-2026-6464", "CVE-2026-6469", "CVE-2026-6470", "CVE-2026-6471", "CVE-2026-6473", "CVE-2026-6637"], "cve_count": 31}, {"version": "17.10", "build": "17.10", "status": "stable", "date": "2026-05-14", "source_as_of": "", "url": "/docs/compare/?release=17.10", "manual_url": "/docs/17/release-17-10.html", "source_url": "/docs/release/17.10/", "entry_count": 58, "categories": {"security": 13, "improvement": 21, "bugfix": 24}, "compatibility_count": 0, "cves": ["CVE-2026-6472", "CVE-2026-6473", "CVE-2026-6474", "CVE-2026-6475", "CVE-2026-6476", "CVE-2026-6477", "CVE-2026-6478", "CVE-2026-6479", "CVE-2026-6637", "CVE-2026-6638"], "cve_count": 10}, {"version": "17.9", "build": "17.9", "status": "stable", "date": "2026-02-26", "source_as_of": "", "url": "/docs/compare/?release=17.9", "manual_url": "/docs/17/release-17-9.html", "source_url": "/docs/release/17.9/", "entry_count": 6, "categories": {"bugfix": 5, "security": 1}, "compatibility_count": 0, "cves": ["CVE-2026-2006"], "cve_count": 1}, {"version": "17.8", "build": "17.8", "status": "stable", "date": "2026-02-12", "source_as_of": "", "url": "/docs/compare/?release=17.8", "manual_url": "/docs/17/release-17-8.html", "source_url": "/docs/release/17.8/", "entry_count": 52, "categories": {"security": 4, "improvement": 25, "bugfix": 23}, "compatibility_count": 0, "cves": ["CVE-2026-2003", "CVE-2026-2004", "CVE-2026-2005", "CVE-2026-2006"], "cve_count": 4}, {"version": "17.7", "build": "17.7", "status": "stable", "date": "2025-11-13", "source_as_of": "", "url": "/docs/compare/?release=17.7", "manual_url": "/docs/17/release-17-7.html", "source_url": "/docs/release/17.7/", "entry_count": 65, "categories": {"security": 2, "improvement": 28, "bugfix": 35}, "compatibility_count": 0, "cves": ["CVE-2025-12817", "CVE-2025-12818"], "cve_count": 2}, {"version": "17.6", "build": "17.6", "status": "stable", "date": "2025-08-14", "source_as_of": "", "url": "/docs/compare/?release=17.6", "manual_url": "/docs/17/release-17-6.html", "source_url": "/docs/release/17.6/", "entry_count": 71, "categories": {"security": 3, "bugfix": 25, "improvement": 43}, "compatibility_count": 0, "cves": ["CVE-2012-0868", "CVE-2017-7484", "CVE-2025-8713", "CVE-2025-8714", "CVE-2025-8715"], "cve_count": 5}, {"version": "17.5", "build": "17.5", "status": "stable", "date": "2025-05-08", "source_as_of": "", "url": "/docs/compare/?release=17.5", "manual_url": "/docs/17/release-17-5.html", "source_url": "/docs/release/17.5/", "entry_count": 61, "categories": {"security": 1, "improvement": 32, "bugfix": 28}, "compatibility_count": 0, "cves": ["CVE-2025-4207"], "cve_count": 1}, {"version": "17.4", "build": "17.4", "status": "stable", "date": "2025-02-20", "source_as_of": "", "url": "/docs/compare/?release=17.4", "manual_url": "/docs/17/release-17-4.html", "source_url": "/docs/release/17.4/", "entry_count": 3, "categories": {"security": 1, "bugfix": 2}, "compatibility_count": 0, "cves": ["CVE-2025-1094"], "cve_count": 1}, {"version": "17.3", "build": "17.3", "status": "stable", "date": "2025-02-13", "source_as_of": "", "url": "/docs/compare/?release=17.3", "manual_url": "/docs/17/release-17-3.html", "source_url": "/docs/release/17.3/", "entry_count": 71, "categories": {"security": 1, "improvement": 33, "bugfix": 37}, "compatibility_count": 0, "cves": ["CVE-2025-1094"], "cve_count": 1}, {"version": "17.2", "build": "17.2", "status": "stable", "date": "2024-11-21", "source_as_of": "", "url": "/docs/compare/?release=17.2", "manual_url": "/docs/17/release-17-2.html", "source_url": "/docs/release/17.2/", "entry_count": 8, "categories": {"bugfix": 4, "security": 1, "improvement": 3}, "compatibility_count": 0, "cves": ["CVE-2024-10978"], "cve_count": 1}, {"version": "17.1", "build": "17.1", "status": "stable", "date": "2024-11-14", "source_as_of": "", "url": "/docs/compare/?release=17.1", "manual_url": "/docs/17/release-17-1.html", "source_url": "/docs/release/17.1/", "entry_count": 41, "categories": {"security": 4, "bugfix": 21, "improvement": 16}, "compatibility_count": 0, "cves": ["CVE-2024-10976", "CVE-2024-10977", "CVE-2024-10978", "CVE-2024-10979"], "cve_count": 4}, {"version": "17.0", "build": "17.0", "status": "stable", "date": "2024-09-26", "source_as_of": "", "url": "/docs/compare/?release=17.0", "manual_url": "/docs/17/release-17.html", "source_url": "/docs/release/17.0/", "entry_count": 182, "categories": {"compatibility": 17, "feature": 154, "bugfix": 2, "performance": 9}, "compatibility_count": 17, "cves": [], "cve_count": 0}], "initial_entries": [{"id": "17.0-d922e984bf9c8012", "cves": [], "html": "<p>Change functions to use a safe <a href=\"/docs/17/runtime-config-client.html#GUC-SEARCH-PATH\">search_path</a> during maintenance operations (Jeff Davis) <a href=\"https://postgr.es/c/2af07e2f7\">\u00a7</a> <a href=\"https://postgr.es/c/b4da732fd64\">\u00a7</a></p>\n<p>This prevents maintenance operations (<code>ANALYZE</code>, <code>CLUSTER</code>, <code>CREATE INDEX</code>, <code>CREATE MATERIALIZED VIEW</code>, <code>REFRESH MATERIALIZED VIEW</code>, <code>REINDEX</code>, or <code>VACUUM</code>) from performing unsafe access. Functions used by expression indexes and materialized views that need to reference non-default schemas must specify a search path during function creation.</p>", "text": "Change functions to use a safe search_path during maintenance operations (Jeff Davis) \u00a7 \u00a7 This prevents maintenance operations (ANALYZE, CLUSTER, CREATE INDEX, CREATE MATERIALIZED VIEW, REFRESH MATERIALIZED VIEW, REINDEX, or VACUUM) from performing unsafe access. Functions used by expression indexes and materialized views that need to reference non-default schemas must specify a search path during function creation.", "title": "Change functions to use a safe search_path during maintenance operations", "commits": ["2af07e2f7", "b4da732fd64"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "64dff99310ae1cfd4ee409c78454de7b69434337010c91e0c087eba9a4ababe6", "section_path": ["Compatibility"], "commit_groups": [["2af07e2f7"], ["b4da732fd64"]], "identity_text": "Change functions to use a safe guc-search-path during maintenance operations (Jeff Davis) This prevents maintenance operations (ANALYZE, CLUSTER, CREATE INDEX, CREATE MATERIALIZED VIEW, REFRESH MATERIALIZED VIEW, REINDEX, or VACUUM) from performing unsafe access. Functions used by expression indexes and materialized views that need to reference non-default schemas must specify a search path during function creation.", "commit_aliases": ["2af07e2f7", "b4da732fd64"], "source_commits": ["2af07e2f7", "b4da732fd64"], "source_entry_id": "17.0/migration/001", "db_id": "cc672acc2498ddd239d6c029f970bad5", "patch_ids": ["27148e55a756fe36b1e6739f26c8b3c0", "b795341e3db72551c1e5eed3aaeee32b"], "statement_hash": "72d3a43b426e67d74c0baf2ac17235620dd45ed163a055d553de860d03e3cf13", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-d922e984bf9c8012", "migration": true}, {"id": "17.0-2ea1268a85e7d7da", "cves": [], "html": "<p>Restrict <code>ago</code> to only appear at the end in <code>interval</code> values (Joseph Koshakow) <a href=\"https://postgr.es/c/165d581f1\">\u00a7</a> <a href=\"https://postgr.es/c/617f9b7d4\">\u00a7</a></p>\n<p>Also, prevent empty interval units from appearing multiple times.</p>", "text": "Restrict ago to only appear at the end in interval values (Joseph Koshakow) \u00a7 \u00a7 Also, prevent empty interval units from appearing multiple times.", "title": "Restrict ago to only appear at the end in interval values", "commits": ["165d581f1", "617f9b7d4"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "c7e922733164fa0a732f25838f27dc020fce3c1ec5663e40046c5cce9f7c8403", "section_path": ["Compatibility"], "commit_groups": [["165d581f1"], ["617f9b7d4"]], "identity_text": "Restrict ago to only appear at the end in interval values (Joseph Koshakow) Also, prevent empty interval units from appearing multiple times.", "commit_aliases": ["165d581f1", "617f9b7d4"], "source_commits": ["165d581f1", "617f9b7d4"], "source_entry_id": "17.0/migration/002", "db_id": "6c0e19904987035c8733604999e0c848", "patch_ids": ["355ea5318d1f63a817910cdf1504f45f", "d49150cfc4dab109d6f8748b4f4f8b04"], "statement_hash": "4e053c43feb5a21ce495ca0f82a0f8473e143508210523c26fbb736ca1fdf21e", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-2ea1268a85e7d7da", "migration": true}, {"id": "17.0-61eed93d43a0c166", "cves": [], "html": "<p>Remove server variable old_snapshot_threshold (Thomas Munro) <a href=\"https://postgr.es/c/f691f5b80\">\u00a7</a></p>\n<p>This variable allowed vacuum to remove rows that potentially could be still visible to running transactions, causing \"snapshot too old\" errors later if accessed. This feature might be re-added to <span>PostgreSQL</span> later if an improved implementation is found.</p>", "text": "Remove server variable old_snapshot_threshold (Thomas Munro) \u00a7 This variable allowed vacuum to remove rows that potentially could be still visible to running transactions, causing \"snapshot too old\" errors later if accessed. This feature might be re-added to PostgreSQL later if an improved implementation is found.", "title": "Remove server variable old_snapshot_threshold", "commits": ["f691f5b80"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "5a82b8109b6d144744746866ac972043810705dd0189c0edee4dbbdaaab190ca", "section_path": ["Compatibility"], "commit_groups": [["f691f5b80"]], "identity_text": "Remove server variable old_snapshot_threshold (Thomas Munro) This variable allowed vacuum to remove rows that potentially could be still visible to running transactions, causing \"snapshot too old\" errors later if accessed. This feature might be re-added to PostgreSQL later if an improved implementation is found.", "commit_aliases": ["f691f5b80"], "source_commits": ["f691f5b80"], "source_entry_id": "17.0/migration/003", "db_id": "b34074adfb3aeb3fe6a9be8015e49712", "patch_ids": ["8c5d8020ab90ccca65a49effd8b21ce0"], "statement_hash": "eb3cde61369c330b9e66df8de8f4b1dbeae90bcd57fd1218ce3850e1efcfd027", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-61eed93d43a0c166", "migration": true}, {"id": "17.0-253d40dcc032be94", "cves": [], "html": "<p>Change <a href=\"/docs/17/sql-set-session-authorization.html\" title=\"SET SESSION AUTHORIZATION\"><code>SET SESSION AUTHORIZATION</code></a> handling of the initial session user's superuser status (Joseph Koshakow) <a href=\"https://postgr.es/c/a0363ab7a\">\u00a7</a></p>\n<p>The new behavior is based on the session user's superuser status at the time the <code>SET SESSION AUTHORIZATION</code> command is issued, rather than their superuser status at connection time.</p>", "text": "Change SET SESSION AUTHORIZATION handling of the initial session user's superuser status (Joseph Koshakow) \u00a7 The new behavior is based on the session user's superuser status at the time the SET SESSION AUTHORIZATION command is issued, rather than their superuser status at connection time.", "title": "Change SET SESSION AUTHORIZATION handling of the initial session user's superuser status", "commits": ["a0363ab7a"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "9f3d6d19c49c1ec62e4d87714e3d313b828647dd9e15902b1e8abf82f52aebb8", "section_path": ["Compatibility"], "commit_groups": [["a0363ab7a"]], "identity_text": "Change SET SESSION AUTHORIZATION handling of the initial session user's superuser status (Joseph Koshakow) The new behavior is based on the session user's superuser status at the time the SET SESSION AUTHORIZATION command is issued, rather than their superuser status at connection time.", "commit_aliases": ["a0363ab7a"], "source_commits": ["a0363ab7a"], "source_entry_id": "17.0/migration/004", "db_id": "a284710c4e8e15eab0f4741705b57eac", "patch_ids": ["301cd2650bab634dc780a6ba3c515916"], "statement_hash": "dd14af4a215b4aa555a4eef2befdad1c9e39a80c16149e7dad092532b873e830", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-253d40dcc032be94", "migration": true}, {"id": "17.0-37f1a80c68dbef53", "cves": [], "html": "<p>Remove feature which simulated per-database users (Nathan Bossart) <a href=\"https://postgr.es/c/884eee5bf\">\u00a7</a></p>\n<p>The feature, <code>db_user_namespace</code>, was rarely used.</p>", "text": "Remove feature which simulated per-database users (Nathan Bossart) \u00a7 The feature, db_user_namespace, was rarely used.", "title": "Remove feature which simulated per-database users", "commits": ["884eee5bf"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "88ec7853163fc34a9953d41f7a25aa6663238fbac3188a3a448c1c31b7dac492", "section_path": ["Compatibility"], "commit_groups": [["884eee5bf"]], "identity_text": "Remove feature which simulated per-database users (Nathan Bossart) The feature, db_user_namespace, was rarely used.", "commit_aliases": ["884eee5bf"], "source_commits": ["884eee5bf"], "source_entry_id": "17.0/migration/005", "db_id": "5f14c9997d29f2b62a899e7940c383cf", "patch_ids": ["edfe6268e4c801676c3acf1ddceffaba"], "statement_hash": "133f8e4a4ab49ace990b8cad84fe9fe5313becfcdbd2d51a22084268735d7ec8", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-37f1a80c68dbef53", "migration": true}, {"id": "17.0-710e087c1bef4846", "cves": [], "html": "<p>Remove <span>adminpack</span> contrib extension (Daniel Gustafsson) <a href=\"https://postgr.es/c/cc09e6549\">\u00a7</a></p>\n<p>This was used by now end-of-life <span>pgAdmin III</span>.</p>", "text": "Remove adminpack contrib extension (Daniel Gustafsson) \u00a7 This was used by now end-of-life pgAdmin III.", "title": "Remove adminpack contrib extension", "commits": ["cc09e6549"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "ad86e2f1db9961ad07f2a20a39ce25e940d3fe8bff8cf4fed136f0900a1b84d7", "section_path": ["Compatibility"], "commit_groups": [["cc09e6549"]], "identity_text": "Remove adminpack contrib extension (Daniel Gustafsson) This was used by now end-of-life pgAdmin III.", "commit_aliases": ["cc09e6549"], "source_commits": ["cc09e6549"], "source_entry_id": "17.0/migration/006", "db_id": "166c355517818678d393b7069567ebcc", "patch_ids": ["667f69d4b75688c6317ae5d996a65e38"], "statement_hash": "b675830b641f123992566dfa75b7b707a569d5aa68d9cf8407cf6231e92f53ab", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-710e087c1bef4846", "migration": true}, {"id": "17.0-138f57ed29e09c6d", "cves": [], "html": "<p>Remove <a href=\"/docs/17/runtime-config-wal.html#GUC-WAL-SYNC-METHOD\">wal_sync_method</a> value <code>fsync_writethrough</code> on <span>Windows</span> (Thomas Munro) <a href=\"https://postgr.es/c/d0c28601e\">\u00a7</a></p>\n<p>This value was the same as <code>fsync</code> on <span>Windows</span>.</p>", "text": "Remove wal_sync_method value fsync_writethrough on Windows (Thomas Munro) \u00a7 This value was the same as fsync on Windows.", "title": "Remove wal_sync_method value fsync_writethrough on Windows", "commits": ["d0c28601e"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "74036521b8c1d076fcbe40bcca1989f69e0278d6918f39aad6d1ae3a4e783d96", "section_path": ["Compatibility"], "commit_groups": [["d0c28601e"]], "identity_text": "Remove guc-wal-sync-method value fsync_writethrough on Windows (Thomas Munro) This value was the same as fsync on Windows.", "commit_aliases": ["d0c28601e"], "source_commits": ["d0c28601e"], "source_entry_id": "17.0/migration/007", "db_id": "686b51dbf857b55e4493e96d25323fb7", "patch_ids": ["56a99d25aa1cfee9b865ec01242d5be9"], "statement_hash": "49d753c3c4b4df461d180e9b5c2fa04390d5f29a1619fb7486f3f3642a02e6c0", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-138f57ed29e09c6d", "migration": true}, {"id": "17.0-3cd4e0f22454d285", "cves": [], "html": "<p>Change file boundary handling of two <acronym>WAL</acronym> file name functions (Kyotaro Horiguchi, Andres Freund, Bruce Momjian) <a href=\"https://postgr.es/c/344afc776\">\u00a7</a></p>\n<p>The functions <a href=\"/docs/17/functions-admin.html#FUNCTIONS-ADMIN-BACKUP-TABLE\" title=\"Table\u00a09.95.\u00a0Backup Control Functions\"><code>pg_walfile_name()</code></a> and <code>pg_walfile_name_offset()</code> used to report the previous <acronym>LSN</acronym> segment number when the <acronym>LSN</acronym> was on a file segment boundary; it now returns the current <acronym>LSN</acronym> segment.</p>", "text": "Change file boundary handling of two WAL file name functions (Kyotaro Horiguchi, Andres Freund, Bruce Momjian) \u00a7 The functions pg_walfile_name() and pg_walfile_name_offset() used to report the previous LSN segment number when the LSN was on a file segment boundary; it now returns the current LSN segment.", "title": "Change file boundary handling of two WAL file name functions", "commits": ["344afc776"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "4c017a2706ee6af77a5e1375ac9a7b1b5eb78f00b1538a868e611b47f4fe5aa4", "section_path": ["Compatibility"], "commit_groups": [["344afc776"]], "identity_text": "Change file boundary handling of two WAL file name functions (Kyotaro Horiguchi, Andres Freund, Bruce Momjian) The functions pg_walfile_name() and pg_walfile_name_offset() used to report the previous LSN segment number when the LSN was on a file segment boundary; it now returns the current LSN segment.", "commit_aliases": ["344afc776"], "source_commits": ["344afc776"], "source_entry_id": "17.0/migration/008", "db_id": "74f74f51c54e1a4e800cca0d0dbad6e7", "patch_ids": ["7b5ba94e96e769d6dcb87c9b7bd4851c"], "statement_hash": "5d93d9f2dbe498ed1b19a20ae20a3f046e46ab976187bd5ca6490207fe428ffb", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-3cd4e0f22454d285", "migration": true}, {"id": "17.0-a946372026bf9605", "cves": [], "html": "<p>Remove server variable <code>trace_recovery_messages</code> since it is no longer needed (Bharath Rupireddy) <a href=\"https://postgr.es/c/c7a3e6b46\">\u00a7</a></p>", "text": "Remove server variable trace_recovery_messages since it is no longer needed (Bharath Rupireddy) \u00a7", "title": "Remove server variable trace_recovery_messages since it is no longer needed", "commits": ["c7a3e6b46"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "ce9369e2d0211d0cab863f3e49076330052d7966e2ea02a934e31f7e4bf04e2a", "section_path": ["Compatibility"], "commit_groups": [["c7a3e6b46"]], "identity_text": "Remove server variable trace_recovery_messages since it is no longer needed (Bharath Rupireddy)", "commit_aliases": ["c7a3e6b46"], "source_commits": ["c7a3e6b46"], "source_entry_id": "17.0/migration/009", "db_id": "d5af5dde274ef58c2321c3ffbaafb5ef", "patch_ids": ["d5ea071446bbbe2a671d84cfc0242b19"], "statement_hash": "7aade84d3e7f620e4dd4bef9576c74f25c56e4202dde83bbf2b8df11a4bd7972", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-a946372026bf9605", "migration": true}, {"id": "17.0-f7c38114100e1337", "cves": [], "html": "<p>Remove <a href=\"/docs/17/information-schema.html\" title=\"Chapter\u00a035.\u00a0The Information Schema\">information schema</a> column <code>element_types</code>.<code>domain_default</code> (Peter Eisentraut) <a href=\"https://postgr.es/c/78806a950\">\u00a7</a></p>", "text": "Remove information schema column element_types.domain_default (Peter Eisentraut) \u00a7", "title": "Remove information schema column element_types.domain_default", "commits": ["78806a950"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "5d62346100402b6999b088d94d30476044d2c215e51414a4c8e98f55f4e3ecc2", "section_path": ["Compatibility"], "commit_groups": [["78806a950"]], "identity_text": "Remove information schema column element_types.domain_default (Peter Eisentraut)", "commit_aliases": ["78806a950"], "source_commits": ["78806a950"], "source_entry_id": "17.0/migration/010", "db_id": "9c37cb22d8759b5d26153e1ea221cb69", "patch_ids": ["30cf237ba9cee48568f30ebbe683b9d0"], "statement_hash": "970aa10e9ccfcaf29ec3331161d989c81e2db7eb93ded7baa9e3248d8b60b334", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-f7c38114100e1337", "migration": true}, {"id": "17.0-fe778327ca66f6d8", "cves": [], "html": "<p>Change <span><a href=\"/docs/17/pgrowlocks.html\" title=\"F.29.\u00a0pgrowlocks \u2014 show a table's row locking information\">pgrowlocks</a></span> lock mode output labels (Bruce Momjian) <a href=\"https://postgr.es/c/15d5d7405\">\u00a7</a></p>", "text": "Change pgrowlocks lock mode output labels (Bruce Momjian) \u00a7", "title": "Change pgrowlocks lock mode output labels", "commits": ["15d5d7405"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "bf48956f4ebcb4404280648ff4274a48c3ddb1d6379aebcb646aeb60412ced22", "section_path": ["Compatibility"], "commit_groups": [["15d5d7405"]], "identity_text": "Change pgrowlocks lock mode output labels (Bruce Momjian)", "commit_aliases": ["15d5d7405"], "source_commits": ["15d5d7405"], "source_entry_id": "17.0/migration/011", "db_id": "06ce9cce2fa546a03a191e28b7bd30ee", "patch_ids": ["e330c9f64ec04f17a9e8c6bf697de7ac"], "statement_hash": "9ba42b8852d0d181fb7574e0a5324e18eeef4be71dd49f40491f0f940508798b", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-fe778327ca66f6d8", "migration": true}, {"id": "17.0-efce6c2e39fd2d94", "cves": [], "html": "<p>Remove <code>buffers_backend</code> and <code>buffers_backend_fsync</code> from <a href=\"/docs/17/monitoring-stats.html#MONITORING-PG-STAT-BGWRITER-VIEW\" title=\"27.2.14.\u00a0pg_stat_bgwriter\"><code>pg_stat_bgwriter</code></a> (Bharath Rupireddy) <a href=\"https://postgr.es/c/74604a37f\">\u00a7</a></p>\n<p>These fields are considered redundant to similar columns in <a href=\"/docs/17/monitoring-stats.html#MONITORING-PG-STAT-IO-VIEW\" title=\"27.2.13.\u00a0pg_stat_io\"><code>pg_stat_io</code></a>.</p>", "text": "Remove buffers_backend and buffers_backend_fsync from pg_stat_bgwriter (Bharath Rupireddy) \u00a7 These fields are considered redundant to similar columns in pg_stat_io.", "title": "Remove buffers_backend and buffers_backend_fsync from pg_stat_bgwriter", "commits": ["74604a37f"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "cc9214a923cc0764381fcdf9b2515a7e760e37a90a91916169ca50338a9c1050", "section_path": ["Compatibility"], "commit_groups": [["74604a37f"]], "identity_text": "Remove buffers_backend and buffers_backend_fsync from pg_stat_bgwriter (Bharath Rupireddy) These fields are considered redundant to similar columns in pg_stat_io.", "commit_aliases": ["74604a37f"], "source_commits": ["74604a37f"], "source_entry_id": "17.0/migration/012", "db_id": "14ab5d3b90b1ea855319d818eb76eab5", "patch_ids": ["abfd4307ea94a77be4159e6d64f933b5"], "statement_hash": "17c3baca41bde637d84c1f675d6329efc1abaac3ea8d7b0059649d57205428f2", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-efce6c2e39fd2d94", "migration": true}, {"id": "17.0-3bc2316f8ee353e9", "cves": [], "html": "<p>Rename I/O block read/write timing statistics columns of <span><a href=\"/docs/17/pgstatstatements.html\" title=\"F.30.\u00a0pg_stat_statements \u2014 track statistics of SQL planning and execution\">pg_stat_statements</a></span> (Nazir Bilal Yavuz) <a href=\"https://postgr.es/c/13d00729d\">\u00a7</a></p>\n<p>This renames <code>blk_read_time</code> to <code>shared_blk_read_time</code>, and <code>blk_write_time</code> to <code>shared_blk_write_time</code>.</p>", "text": "Rename I/O block read/write timing statistics columns of pg_stat_statements (Nazir Bilal Yavuz) \u00a7 This renames blk_read_time to shared_blk_read_time, and blk_write_time to shared_blk_write_time.", "title": "Rename I/O block read/write timing statistics columns of pg_stat_statements", "commits": ["13d00729d"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "3f6bc570146409810e5d6cb5f52cf5a0645b03ece5a11f10ab743c38ea6e2c4f", "section_path": ["Compatibility"], "commit_groups": [["13d00729d"]], "identity_text": "Rename I/O block read/write timing statistics columns of pgstatstatements (Nazir Bilal Yavuz) This renames blk_read_time to shared_blk_read_time, and blk_write_time to shared_blk_write_time.", "commit_aliases": ["13d00729d"], "source_commits": ["13d00729d"], "source_entry_id": "17.0/migration/013", "db_id": "521858489a384102d9e8c61fd916177f", "patch_ids": ["ab363262e882ed9cfaced4d6c5deda53"], "statement_hash": "7a91b3290978bb385b007e52f8cd2e89093017ee02bdb6ffa835deade60c969f", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-3bc2316f8ee353e9", "migration": true}, {"id": "17.0-8e45fc51019a9684", "cves": [], "html": "<p>Change <a href=\"/docs/17/catalog-pg-attribute.html\" title=\"51.7.\u00a0pg_attribute\"><code>pg_attribute</code>.<code>attstattarget</code></a> and <code>pg_statistic_ext</code>.<code>stxstattarget</code> to represent the default statistics target as <code>NULL</code> (Peter Eisentraut) <a href=\"https://postgr.es/c/4f622503d\">\u00a7</a> <a href=\"https://postgr.es/c/012460ee9\">\u00a7</a></p>", "text": "Change pg_attribute.attstattarget and pg_statistic_ext.stxstattarget to represent the default statistics target as NULL (Peter Eisentraut) \u00a7 \u00a7", "title": "Change pg_attribute.attstattarget and pg_statistic_ext.stxstattarget to represent the default statistics target as NULL", "commits": ["012460ee9", "4f622503d"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "ee9301abc5ba136b5310f2ba247b310e6f05a93b7eeb20e46912a9b9e1105ef2", "section_path": ["Compatibility"], "commit_groups": [["012460ee9"], ["4f622503d"]], "identity_text": "Change pg_attribute.attstattarget and pg_statistic_ext.stxstattarget to represent the default statistics target as NULL (Peter Eisentraut)", "commit_aliases": ["012460ee9", "4f622503d"], "source_commits": ["012460ee9", "4f622503d"], "source_entry_id": "17.0/migration/014", "db_id": "55cac36d03b238bca53d532c65e1d15f", "patch_ids": ["4d496fe2fd867ecb3ba5df367b723dd0", "5ca9219021d08dfbe06ec44012775182"], "statement_hash": "9f8dd36740de6cc9002012a6b84508c090110858b69c66d48fe1b23559ef1ef2", "relations": [{"rule": 2, "type": "related", "target": "6092816ce66efe9e474514c27d1edf89", "evidence": {"same_day": true, "patch_ids": ["4d496fe2fd867ecb3ba5df367b723dd0"]}}], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-8e45fc51019a9684", "migration": true}, {"id": "17.0-9b65a0870aed3d75", "cves": [], "html": "<p>Rename <a href=\"/docs/17/catalog-pg-collation.html\" title=\"51.12.\u00a0pg_collation\"><code>pg_collation</code>.<code>colliculocale</code></a> to <code>colllocale</code> and <a href=\"/docs/17/catalog-pg-database.html\" title=\"51.15.\u00a0pg_database\"><code>pg_database</code>.<code>daticulocale</code></a> to <code>datlocale</code> (Jeff Davis) <a href=\"https://postgr.es/c/f696c0cd5\">\u00a7</a></p>", "text": "Rename pg_collation.colliculocale to colllocale and pg_database.daticulocale to datlocale (Jeff Davis) \u00a7", "title": "Rename pg_collation.colliculocale to colllocale and pg_database.daticulocale to datlocale", "commits": ["f696c0cd5"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "af8abeeb9a49d32e8211cd2706f29bb8263b9fd6192cf1c523b9f48c1970a015", "section_path": ["Compatibility"], "commit_groups": [["f696c0cd5"]], "identity_text": "Rename pg_collation.colliculocale to colllocale and pg_database.daticulocale to datlocale (Jeff Davis)", "commit_aliases": ["f696c0cd5"], "source_commits": ["f696c0cd5"], "source_entry_id": "17.0/migration/015", "db_id": "2fc1ec23c0360d980ba0f5693d4723e3", "patch_ids": ["6bce4b4beb93e2fab15393aac74de9c5"], "statement_hash": "31b5beb1310fee3f35abba7fc3e4072aadf5a7c7ff9cf5d19212d6ac49d4a3e7", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-9b65a0870aed3d75", "migration": true}, {"id": "17.0-83ba247a819589ec", "cves": [], "html": "<p>Rename <a href=\"/docs/17/progress-reporting.html#VACUUM-PROGRESS-REPORTING\" title=\"27.4.5.\u00a0VACUUM Progress Reporting\"><code>pg_stat_progress_vacuum</code></a> column <code>max_dead_tuples</code> to <code>max_dead_tuple_bytes</code>, rename <code>num_dead_tuples</code> to <code>num_dead_item_ids</code>, and add <code>dead_tuple_bytes</code> (Masahiko Sawada) <a href=\"https://postgr.es/c/667e65aac\">\u00a7</a> <a href=\"https://postgr.es/c/f1affb670\">\u00a7</a></p>", "text": "Rename pg_stat_progress_vacuum column max_dead_tuples to max_dead_tuple_bytes, rename num_dead_tuples to num_dead_item_ids, and add dead_tuple_bytes (Masahiko Sawada) \u00a7 \u00a7", "title": "Rename pg_stat_progress_vacuum column max_dead_tuples to max_dead_tuple_bytes, rename num_dead_tuples to num_dead_item_ids, and add dead_tuple_bytes", "commits": ["667e65aac", "f1affb670"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "65af897e2a50329f28af6aae9770ed9560293da4c8654adca7c0ddad884a339b", "section_path": ["Compatibility"], "commit_groups": [["667e65aac"], ["f1affb670"]], "identity_text": "Rename pg_stat_progress_vacuum column max_dead_tuples to max_dead_tuple_bytes, rename num_dead_tuples to num_dead_item_ids, and add dead_tuple_bytes (Masahiko Sawada)", "commit_aliases": ["667e65aac", "f1affb670"], "source_commits": ["667e65aac", "f1affb670"], "source_entry_id": "17.0/migration/016", "db_id": "8b815f87d891f86edf6d47ab77ead937", "patch_ids": ["19217bd878f4c23be2e5b3f9cf78a8c5", "c3bd16b8d0e781c5494b9d539a9c8ca5"], "statement_hash": "1ec0e026d2f88826348b7e2efb08134a22a0db506d06897ee4468704cc8a9a07", "relations": [{"rule": 2, "type": "related", "target": "0321eade032d4cb38972f9e735a7b2c6", "evidence": {"same_day": true, "patch_ids": ["19217bd878f4c23be2e5b3f9cf78a8c5"], "ambiguous_patch_ids": ["5d86834128896d8abb2bc88737d46417"]}}], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-83ba247a819589ec", "migration": true}, {"id": "17.0-3340286b2ddec381", "cves": [], "html": "<p>Rename <acronym>SLRU</acronym> columns in system view <a href=\"/docs/17/monitoring-stats.html#MONITORING-PG-STAT-SLRU-VIEW\" title=\"27.2.25.\u00a0pg_stat_slru\"><code>pg_stat_slru</code></a> (Alvaro Herrera) <a href=\"https://postgr.es/c/bcdfa5f2e\">\u00a7</a></p>\n<p>The column names accepted by <a href=\"/docs/17/monitoring-stats.html#MONITORING-STATS-FUNCS-TABLE\" title=\"Table\u00a027.36.\u00a0Additional Statistics Functions\"><code>pg_stat_reset_slru()</code></a> are also changed.</p>", "text": "Rename SLRU columns in system view pg_stat_slru (Alvaro Herrera) \u00a7 The column names accepted by pg_stat_reset_slru() are also changed.", "title": "Rename SLRU columns in system view pg_stat_slru", "commits": ["bcdfa5f2e"], "section": "Compatibility", "category": "compatibility", "source_url": "/docs/release/17.0/#RELEASE-17-MIGRATION", "source_hash": "a50a2fc722f62186e84169429a30b38153d552ded961651dc2e6c3f3837021d6", "section_path": ["Compatibility"], "commit_groups": [["bcdfa5f2e"]], "identity_text": "Rename SLRU columns in system view pg_stat_slru (Alvaro Herrera) The column names accepted by pg_stat_reset_slru() are also changed.", "commit_aliases": ["bcdfa5f2e"], "source_commits": ["bcdfa5f2e"], "source_entry_id": "17.0/migration/017", "db_id": "e152ac4c1f5f8d987d2d4164db352c5d", "patch_ids": ["823fd6f92af518e49e4224ce249d8d5f"], "statement_hash": "f9dfa9d3d7a6e9d7b97c2431147c8763d3306f572c9616d361cfbc7d62e22366", "relations": [], "category_label": "Compatibility", "url": "/docs/compare/?release=17.0#17.0-3340286b2ddec381", "migration": true}, {"id": "17.0-5dca9c20174dd943", "cves": [], "html": "<p>Allow the optimizer to improve <acronym>CTE</acronym> plans by considering the statistics and sort order of columns referenced in earlier row output clauses (Jian Guo, Richard Guo, Tom Lane) <a href=\"https://postgr.es/c/f7816aec2\">\u00a7</a> <a href=\"https://postgr.es/c/a65724dfa\">\u00a7</a></p>", "text": "Allow the optimizer to improve CTE plans by considering the statistics and sort order of columns referenced in earlier row output clauses (Jian Guo, Richard Guo, Tom Lane) \u00a7 \u00a7", "title": "Allow the optimizer to improve CTE plans by considering the statistics and sort order of columns referenced in earlier row output clauses", "commits": ["a65724dfa", "f7816aec2"], "section": "Server / Optimizer", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-OPTIMIZER", "source_hash": "eb7e5faf6f425197daedcb76b78cbc39f042ce8562cdef12882543b7d7b4070e", "section_path": ["Server", "Optimizer"], "commit_groups": [["a65724dfa"], ["f7816aec2"]], "identity_text": "Allow the optimizer to improve CTE plans by considering the statistics and sort order of columns referenced in earlier row output clauses (Jian Guo, Richard Guo, Tom Lane)", "commit_aliases": ["a65724dfa", "f7816aec2"], "source_commits": ["a65724dfa", "f7816aec2"], "source_entry_id": "17.0/changes/001", "db_id": "1bb1a2c448bb08cbe14be346046d20fd", "patch_ids": ["dd6efb8af27f478ece630d77b62169aa", "e36c8e7bc021005d10ff030521cc9739"], "statement_hash": "4bf0f103f215559ebf931992edf6c51246aefce339d92536b4458efdd2e66ee7", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-5dca9c20174dd943", "migration": false}, {"id": "17.0-1fa3db8c591e58c3", "cves": [], "html": "<p>Improve optimization of <code>IS NOT NULL</code> and <code>IS NULL</code> query restrictions (David Rowley, Richard Guo, Andy Fan) <a href=\"https://postgr.es/c/b262ad440\">\u00a7</a> <a href=\"https://postgr.es/c/3af704098\">\u00a7</a></p>\n<p>Remove <code>IS NOT NULL</code> restrictions from queries on <code>NOT NULL</code> columns and eliminate scans on <code>NOT NULL</code> columns if <code>IS NULL</code> is specified.</p>", "text": "Improve optimization of IS NOT NULL and IS NULL query restrictions (David Rowley, Richard Guo, Andy Fan) \u00a7 \u00a7 Remove IS NOT NULL restrictions from queries on NOT NULL columns and eliminate scans on NOT NULL columns if IS NULL is specified.", "title": "Improve optimization of IS NOT NULL and IS NULL query restrictions", "commits": ["3af704098", "b262ad440"], "section": "Server / Optimizer", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-OPTIMIZER", "source_hash": "7c05c9caff1d1ce0caea80d6711c0798c93c60e752dd8c7418b054db78b85639", "section_path": ["Server", "Optimizer"], "commit_groups": [["3af704098"], ["b262ad440"]], "identity_text": "Improve optimization of IS NOT NULL and IS NULL query restrictions (David Rowley, Richard Guo, Andy Fan) Remove IS NOT NULL restrictions from queries on NOT NULL columns and eliminate scans on NOT NULL columns if IS NULL is specified.", "commit_aliases": ["3af704098", "b262ad440"], "source_commits": ["3af704098", "b262ad440"], "source_entry_id": "17.0/changes/002", "db_id": "6a8a68dcc3d0afa8fe41f9c0cb346cdb", "patch_ids": ["f0600bde890998500bbb618c1b685216", "ff7fbff5acc4e14db82db8a232d3033c"], "statement_hash": "5b89ca77e9383dc291180695491f866ffe59cf3f577677d5b7c4ce737ae70704", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-1fa3db8c591e58c3", "migration": false}, {"id": "17.0-e66b10405f9e0c0f", "cves": [], "html": "<p>Allow partition pruning on boolean columns on <code>IS [NOT] UNKNOWN</code> conditionals (David Rowley) <a href=\"https://postgr.es/c/07c36c133\">\u00a7</a></p>", "text": "Allow partition pruning on boolean columns on IS [NOT] UNKNOWN conditionals (David Rowley) \u00a7", "title": "Allow partition pruning on boolean columns on IS [NOT] UNKNOWN conditionals", "commits": ["07c36c133"], "section": "Server / Optimizer", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-OPTIMIZER", "source_hash": "d331f3bd8a6586468f0229c43b2feee5a2f695567cd0e8dcdc42726c3c46211a", "section_path": ["Server", "Optimizer"], "commit_groups": [["07c36c133"]], "identity_text": "Allow partition pruning on boolean columns on IS [NOT] UNKNOWN conditionals (David Rowley)", "commit_aliases": ["07c36c133"], "source_commits": ["07c36c133"], "source_entry_id": "17.0/changes/003", "db_id": "afda858770617dec4b1376034bb38216", "patch_ids": ["8ed535aa9c37315fc74364911854ff1a"], "statement_hash": "7ccc721d6d3c781fb621fd9ec123f4b31861655429858dc2d7b5fd09658778ed", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-e66b10405f9e0c0f", "migration": false}, {"id": "17.0-1327bba6a0be00f5", "cves": [], "html": "<p>Improve optimization of range values when using containment operators &lt;@ and @&gt; (Kim Johan Andersson, Jian He) <a href=\"https://postgr.es/c/075df6b20\">\u00a7</a></p>", "text": "Improve optimization of range values when using containment operators <@ and @> (Kim Johan Andersson, Jian He) \u00a7", "title": "Improve optimization of range values when using containment operators <@ and @>", "commits": ["075df6b20"], "section": "Server / Optimizer", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-OPTIMIZER", "source_hash": "aacddfb193bc2a88d93a27a0db3c55fe9903d1488e18294d0d495a09314a6258", "section_path": ["Server", "Optimizer"], "commit_groups": [["075df6b20"]], "identity_text": "Improve optimization of range values when using containment operators <@ and @> (Kim Johan Andersson, Jian He)", "commit_aliases": ["075df6b20"], "source_commits": ["075df6b20"], "source_entry_id": "17.0/changes/004", "db_id": "d1f7be8974ba06dfc203556a75d0b63e", "patch_ids": ["9da08e61b99722f0b36328e0507510c9"], "statement_hash": "377e3b1f92476ceb43181983d5d69e7003385bb96cba0986365b251bdffb3e3a", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-1327bba6a0be00f5", "migration": false}, {"id": "17.0-a48992b5705acf8c", "cves": [], "html": "<p>Allow correlated <code>IN</code> subqueries to be transformed into joins (Andy Fan, Tom Lane) <a href=\"https://postgr.es/c/9f1337639\">\u00a7</a></p>", "text": "Allow correlated IN subqueries to be transformed into joins (Andy Fan, Tom Lane) \u00a7", "title": "Allow correlated IN subqueries to be transformed into joins", "commits": ["9f1337639"], "section": "Server / Optimizer", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-OPTIMIZER", "source_hash": "7a79baf5daa1de4f6a03744cccacba82c5839fa158e77bb1bb1f25a654a465e7", "section_path": ["Server", "Optimizer"], "commit_groups": [["9f1337639"]], "identity_text": "Allow correlated IN subqueries to be transformed into joins (Andy Fan, Tom Lane)", "commit_aliases": ["9f1337639"], "source_commits": ["9f1337639"], "source_entry_id": "17.0/changes/005", "db_id": "bd6d6519713b08c9c7cf110314e70ea2", "patch_ids": ["9ff41ac8faf0b88877f55a3102aa7ca1"], "statement_hash": "291f61f422e10fcd5437a30e9e3675618ff3f18d9cc162e4146d6283e1f82851", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-a48992b5705acf8c", "migration": false}, {"id": "17.0-e2fd7a84d4159b50", "cves": [], "html": "<p>Improve optimization of the <code>LIMIT</code> clause on partitioned tables, inheritance parents, and <code>UNION ALL</code> queries (Andy Fan, David Rowley) <a href=\"https://postgr.es/c/a8a968a82\">\u00a7</a></p>", "text": "Improve optimization of the LIMIT clause on partitioned tables, inheritance parents, and UNION ALL queries (Andy Fan, David Rowley) \u00a7", "title": "Improve optimization of the LIMIT clause on partitioned tables, inheritance parents, and UNION ALL queries", "commits": ["a8a968a82"], "section": "Server / Optimizer", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-OPTIMIZER", "source_hash": "c20d48a847b378c3bd762b7d9a14f2460fd0fe52bebfc264431dc7ee88ee8c5f", "section_path": ["Server", "Optimizer"], "commit_groups": [["a8a968a82"]], "identity_text": "Improve optimization of the LIMIT clause on partitioned tables, inheritance parents, and UNION ALL queries (Andy Fan, David Rowley)", "commit_aliases": ["a8a968a82"], "source_commits": ["a8a968a82"], "source_entry_id": "17.0/changes/006", "db_id": "83282acbc3be079c637d32e6d6cebf05", "patch_ids": ["62d46325d2a848ee5e5caa049662a48e"], "statement_hash": "d1029e52b0d66482bdf975a702319bffddd519a8ef83347d01199c89fd7c09ab", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-e2fd7a84d4159b50", "migration": false}, {"id": "17.0-f2fef5274dea4c14", "cves": [], "html": "<p>Allow query nodes to be run in parallel in more cases (Tom Lane) <a href=\"https://postgr.es/c/e08d74ca1\">\u00a7</a></p>", "text": "Allow query nodes to be run in parallel in more cases (Tom Lane) \u00a7", "title": "Allow query nodes to be run in parallel in more cases", "commits": ["e08d74ca1"], "section": "Server / Optimizer", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-OPTIMIZER", "source_hash": "2fc5e7bbf46cfd7d1e6bd86828ce9e60d4fd41ae29f16ceb508e584a880ca2b8", "section_path": ["Server", "Optimizer"], "commit_groups": [["e08d74ca1"]], "identity_text": "Allow query nodes to be run in parallel in more cases (Tom Lane)", "commit_aliases": ["e08d74ca1"], "source_commits": ["e08d74ca1"], "source_entry_id": "17.0/changes/007", "db_id": "0fa6c000b6b77e4811956857239c9210", "patch_ids": ["8a7fca928d7277fb722987d1122d15ff"], "statement_hash": "f7b3830c016aba7f85d380badc1eb852144eb342878a16dafbc4505cc6aa5295", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-f2fef5274dea4c14", "migration": false}, {"id": "17.0-43662c9e790cd7e1", "cves": [], "html": "<p>Allow <code>GROUP BY</code> columns to be internally ordered to match <code>ORDER BY</code> (Andrei Lepikhov, Teodor Sigaev) <a href=\"https://postgr.es/c/0452b461b\">\u00a7</a></p>\n<p>This can be disabled using server variable <a href=\"/docs/17/runtime-config-query.html#GUC-ENABLE-GROUPBY-REORDERING\">enable_group_by_reordering</a>.</p>", "text": "Allow GROUP BY columns to be internally ordered to match ORDER BY (Andrei Lepikhov, Teodor Sigaev) \u00a7 This can be disabled using server variable enable_group_by_reordering.", "title": "Allow GROUP BY columns to be internally ordered to match ORDER BY", "commits": ["0452b461b"], "section": "Server / Optimizer", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-OPTIMIZER", "source_hash": "69a7a8adce04ec7d64e11c11fa22957f06009f1ebf52db9fbe59082ecb65e7b1", "section_path": ["Server", "Optimizer"], "commit_groups": [["0452b461b"]], "identity_text": "Allow GROUP BY columns to be internally ordered to match ORDER BY (Andrei Lepikhov, Teodor Sigaev) This can be disabled using server variable guc-enable-groupby-reordering .", "commit_aliases": ["0452b461b"], "source_commits": ["0452b461b"], "source_entry_id": "17.0/changes/008", "db_id": "02f929ca7ad29c477bf05b612f478447", "patch_ids": ["31d9db254e62be9c4a36570707e5f98d"], "statement_hash": "540cd1f010beb51842f38059da03d4ee92041d1eb1624736616488927742e9b9", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-43662c9e790cd7e1", "migration": false}, {"id": "17.0-dcd3ee0b81121cb3", "cves": [], "html": "<p>Allow <code>UNION</code> (without <code>ALL</code>) to use MergeAppend (David Rowley) <a href=\"https://postgr.es/c/66c0185a3\">\u00a7</a></p>", "text": "Allow UNION (without ALL) to use MergeAppend (David Rowley) \u00a7", "title": "Allow UNION (without ALL) to use MergeAppend", "commits": ["66c0185a3"], "section": "Server / Optimizer", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-OPTIMIZER", "source_hash": "e539e116a16a6c36494f626d124d5c74cd131b41507643ef1dbb92491985d324", "section_path": ["Server", "Optimizer"], "commit_groups": [["66c0185a3"]], "identity_text": "Allow UNION (without ALL) to use MergeAppend (David Rowley)", "commit_aliases": ["66c0185a3"], "source_commits": ["66c0185a3"], "source_entry_id": "17.0/changes/009", "db_id": "1b4c2b726811d73067a879fe0f452060", "patch_ids": ["f7a0eee21e8cda45a208b9a2c8ab935b"], "statement_hash": "c0538bd4e938c0a4a086c5cd87a4327760cbfadc09e5fca423956ff44d44a406", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-dcd3ee0b81121cb3", "migration": false}, {"id": "17.0-462c2a0ca8af348d", "cves": [], "html": "<p>Fix MergeAppend plans to more accurately compute the number of rows that need to be sorted (Alexander Kuzmenkov) <a href=\"https://postgr.es/c/9d1a5354f\">\u00a7</a></p>", "text": "Fix MergeAppend plans to more accurately compute the number of rows that need to be sorted (Alexander Kuzmenkov) \u00a7", "title": "Fix MergeAppend plans to more accurately compute the number of rows that need to be sorted", "commits": ["9d1a5354f"], "section": "Server / Optimizer", "category": "bugfix", "source_url": "/docs/release/17.0/#RELEASE-17-OPTIMIZER", "source_hash": "91b1492c15711f380b4f4a5023adc25acd41631c44a22e0e49bd30385524a85a", "section_path": ["Server", "Optimizer"], "commit_groups": [["9d1a5354f"]], "identity_text": "Fix MergeAppend plans to more accurately compute the number of rows that need to be sorted (Alexander Kuzmenkov)", "commit_aliases": ["9d1a5354f"], "source_commits": ["9d1a5354f"], "source_entry_id": "17.0/changes/010", "db_id": "3f2526f05d7f915d14b9d71a273f8a05", "patch_ids": ["51394b47048db81db5c8ca3b8f195e0c"], "statement_hash": "1b89e926d198570600425805c23c395ea3e13a6e84af61090ed0ada7f0584d69", "relations": [], "category_label": "Bug fixes", "url": "/docs/compare/?release=17.0#17.0-462c2a0ca8af348d", "migration": false}, {"id": "17.0-0194996610fca966", "cves": [], "html": "<p>Allow <a href=\"/docs/17/gist.html\" title=\"64.2.\u00a0GiST Indexes\">GiST</a> and <a href=\"/docs/17/spgist.html\" title=\"64.3.\u00a0SP-GiST Indexes\">SP-GiST</a> indexes to be part of incremental sorts (Miroslav Bendik) <a href=\"https://postgr.es/c/625d5b3ca\">\u00a7</a></p>\n<p>This is particularly useful for <code>ORDER BY</code> clauses where the first column has a GiST and SP-GiST index, and other columns do not.</p>", "text": "Allow GiST and SP-GiST indexes to be part of incremental sorts (Miroslav Bendik) \u00a7 This is particularly useful for ORDER BY clauses where the first column has a GiST and SP-GiST index, and other columns do not.", "title": "Allow GiST and SP-GiST indexes to be part of incremental sorts", "commits": ["625d5b3ca"], "section": "Server / Optimizer", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-OPTIMIZER", "source_hash": "61d6f668fbc86ce8556101e58d4a9a263c5ec7c6fcf48ab1111902ca64253204", "section_path": ["Server", "Optimizer"], "commit_groups": [["625d5b3ca"]], "identity_text": "Allow GiST and SP-GiST indexes to be part of incremental sorts (Miroslav Bendik) This is particularly useful for ORDER BY clauses where the first column has a GiST and SP-GiST index, and other columns do not.", "commit_aliases": ["625d5b3ca"], "source_commits": ["625d5b3ca"], "source_entry_id": "17.0/changes/011", "db_id": "1e78c474d4dc8fead2cee8adc6b881e1", "patch_ids": ["dfbbdfe017c5c71c4ef9dfa0c1c47eb9"], "statement_hash": "94587849bd7b7e481c3f6b17c98668f4483a63ce346e12aef6e0b1a243ff9858", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-0194996610fca966", "migration": false}, {"id": "17.0-e916cefcb5ce716c", "cves": [], "html": "<p>Add columns to <a href=\"/docs/17/view-pg-stats.html\" title=\"52.27.\u00a0pg_stats\"><code>pg_stats</code></a> to report range-type histogram information (Egor Rogov, Soumyadeep Chakraborty) <a href=\"https://postgr.es/c/bc3c8db8a\">\u00a7</a></p>", "text": "Add columns to pg_stats to report range-type histogram information (Egor Rogov, Soumyadeep Chakraborty) \u00a7", "title": "Add columns to pg_stats to report range-type histogram information", "commits": ["bc3c8db8a"], "section": "Server / Optimizer", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-OPTIMIZER", "source_hash": "2a5511c28248dc15f2f1b168c9387eec29b7ad33e15680f3c8d3d57fe1ae5fa7", "section_path": ["Server", "Optimizer"], "commit_groups": [["bc3c8db8a"]], "identity_text": "Add columns to pg_stats to report range-type histogram information (Egor Rogov, Soumyadeep Chakraborty)", "commit_aliases": ["bc3c8db8a"], "source_commits": ["bc3c8db8a"], "source_entry_id": "17.0/changes/012", "db_id": "037099a7ff600d9768772dd9aa4fd36e", "patch_ids": ["a63e4162a922bb5fcc04165cdac5e2c6"], "statement_hash": "cf3c84a11f3b613b0a873d0b9a0575c0838ec84ca1864ada35f16c59866938af", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-e916cefcb5ce716c", "migration": false}, {"id": "17.0-6bb3d30ee674e9f8", "cves": [], "html": "<p>Allow <a href=\"/docs/17/btree.html\" title=\"64.1.\u00a0B-Tree Indexes\">btree</a> indexes to more efficiently find a set of values, such as those supplied by <code>IN</code> clauses using constants (Peter Geoghegan, Matthias van de Meent) <a href=\"https://postgr.es/c/5bf748b86\">\u00a7</a></p>", "text": "Allow btree indexes to more efficiently find a set of values, such as those supplied by IN clauses using constants (Peter Geoghegan, Matthias van de Meent) \u00a7", "title": "Allow btree indexes to more efficiently find a set of values, such as those supplied by IN clauses using constants", "commits": ["5bf748b86"], "section": "Server / Indexes", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-INDEXES", "source_hash": "b78577eba77ed7afb71b32e574365c6fc2aae6b448b0920298f0706a96cffef8", "section_path": ["Server", "Indexes"], "commit_groups": [["5bf748b86"]], "identity_text": "Allow btree indexes to more efficiently find a set of values, such as those supplied by IN clauses using constants (Peter Geoghegan, Matthias van de Meent)", "commit_aliases": ["5bf748b86"], "source_commits": ["5bf748b86"], "source_entry_id": "17.0/changes/013", "db_id": "e47d7b6056c6ec1e9e008a67eb552a53", "patch_ids": ["62f02f1e9bb968e242e65dd52e8d5cc8"], "statement_hash": "3ee0ee4a8dd9858c539ca1b15a832632c8c4d1dcce33b59c7bf1fe24a90b6473", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-6bb3d30ee674e9f8", "migration": false}, {"id": "17.0-6eca9b906de88bac", "cves": [], "html": "<p>Allow <a href=\"/docs/17/brin.html\" title=\"64.5.\u00a0BRIN Indexes\"><acronym>BRIN</acronym></a> indexes to be created using parallel workers (Tomas Vondra, Matthias van de Meent) <a href=\"https://postgr.es/c/b43757171\">\u00a7</a></p>", "text": "Allow BRIN indexes to be created using parallel workers (Tomas Vondra, Matthias van de Meent) \u00a7", "title": "Allow BRIN indexes to be created using parallel workers", "commits": ["b43757171"], "section": "Server / Indexes", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-INDEXES", "source_hash": "c770c0ed1566fb3735ece3a13dc379fd18ddafff4833a97d43abecbd1dbe6e30", "section_path": ["Server", "Indexes"], "commit_groups": [["b43757171"]], "identity_text": "Allow BRIN indexes to be created using parallel workers (Tomas Vondra, Matthias van de Meent)", "commit_aliases": ["b43757171"], "source_commits": ["b43757171"], "source_entry_id": "17.0/changes/014", "db_id": "357f54e0344a35006dbfb9a0f7949ed5", "patch_ids": ["06897789dd8c7b7411b4080c6ca4173e"], "statement_hash": "92760d5d96ba8a77fdf7906cef8e52436561bf69711442768c57d6c0e0daca29", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-6eca9b906de88bac", "migration": false}, {"id": "17.0-c48036d79bb1041e", "cves": [], "html": "<p>Allow vacuum to more efficiently remove and freeze tuples (Melanie Plageman, Heikki Linnakangas) <a href=\"https://postgr.es/c/6dbb49026\">\u00a7</a></p>\n<p><acronym>WAL</acronym> traffic caused by vacuum is also more compact.</p>", "text": "Allow vacuum to more efficiently remove and freeze tuples (Melanie Plageman, Heikki Linnakangas) \u00a7 WAL traffic caused by vacuum is also more compact.", "title": "Allow vacuum to more efficiently remove and freeze tuples", "commits": ["6dbb49026"], "section": "Server / General Performance", "category": "performance", "source_url": "/docs/release/17.0/#RELEASE-17-PERFORMANCE", "source_hash": "8b0684783c44f4a5b4a678b52f856b2edff73b477c6a1537b0ac04cd3bba07d4", "section_path": ["Server", "General Performance"], "commit_groups": [["6dbb49026"]], "identity_text": "Allow vacuum to more efficiently remove and freeze tuples (Melanie Plageman, Heikki Linnakangas) WAL traffic caused by vacuum is also more compact.", "commit_aliases": ["6dbb49026"], "source_commits": ["6dbb49026"], "source_entry_id": "17.0/changes/015", "db_id": "89a653da6e7aa69a72c4cd8c75af4011", "patch_ids": ["5d86834128896d8abb2bc88737d46417"], "statement_hash": "863cb996bf9728565e861341970344c05db07fae1a00e77d1a4149fad751578b", "relations": [{"rule": 2, "type": "related", "target": "0321eade032d4cb38972f9e735a7b2c6", "evidence": {"same_day": true, "patch_ids": ["5d86834128896d8abb2bc88737d46417"], "ambiguous_patch_ids": ["5d86834128896d8abb2bc88737d46417"]}}], "category_label": "Performance", "url": "/docs/compare/?release=17.0#17.0-c48036d79bb1041e", "migration": false}, {"id": "17.0-fc17ec75c507fdfc", "cves": [], "html": "<p>Allow vacuum to more efficiently store tuple references (Masahiko Sawada, John Naylor) <a href=\"https://postgr.es/c/ee1b30f12\">\u00a7</a> <a href=\"https://postgr.es/c/30e144287\">\u00a7</a> <a href=\"https://postgr.es/c/667e65aac\">\u00a7</a> <a href=\"https://postgr.es/c/6dbb49026\">\u00a7</a></p>\n<p>Additionally, vacuum is no longer silently limited to one gigabyte of memory when <a href=\"/docs/17/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM\">maintenance_work_mem</a> or <a href=\"/docs/17/runtime-config-resource.html#GUC-AUTOVACUUM-WORK-MEM\">autovacuum_work_mem</a> are higher.</p>", "text": "Allow vacuum to more efficiently store tuple references (Masahiko Sawada, John Naylor) \u00a7 \u00a7 \u00a7 \u00a7 Additionally, vacuum is no longer silently limited to one gigabyte of memory when maintenance_work_mem or autovacuum_work_mem are higher.", "title": "Allow vacuum to more efficiently store tuple references", "commits": ["30e144287", "667e65aac", "6dbb49026", "ee1b30f12"], "section": "Server / General Performance", "category": "performance", "source_url": "/docs/release/17.0/#RELEASE-17-PERFORMANCE", "source_hash": "88aab9801a30303866f8b26ed1f8d771db39f2e1168233d760b9634698385d1e", "section_path": ["Server", "General Performance"], "commit_groups": [["30e144287"], ["667e65aac"], ["6dbb49026"], ["ee1b30f12"]], "identity_text": "Allow vacuum to more efficiently store tuple references (Masahiko Sawada, John Naylor) Additionally, vacuum is no longer silently limited to one gigabyte of memory when guc-maintenance-work-mem or guc-autovacuum-work-mem are higher.", "commit_aliases": ["30e144287", "667e65aac", "6dbb49026", "ee1b30f12"], "source_commits": ["30e144287", "667e65aac", "6dbb49026", "ee1b30f12"], "source_entry_id": "17.0/changes/016", "db_id": "0321eade032d4cb38972f9e735a7b2c6", "patch_ids": ["19217bd878f4c23be2e5b3f9cf78a8c5", "263f7b224629a60b546cdf35f2c8f04d", "5d86834128896d8abb2bc88737d46417", "d577808acab8c13e3546b8fdc5244b59"], "statement_hash": "3961e80042faf2476c0e265de934a1e6a51c2364064d288b1ef4b1ceac3951fd", "relations": [{"rule": 2, "type": "related", "target": "89a653da6e7aa69a72c4cd8c75af4011", "evidence": {"same_day": true, "patch_ids": ["5d86834128896d8abb2bc88737d46417"], "ambiguous_patch_ids": ["5d86834128896d8abb2bc88737d46417"]}}, {"rule": 2, "type": "related", "target": "8b815f87d891f86edf6d47ab77ead937", "evidence": {"same_day": true, "patch_ids": ["19217bd878f4c23be2e5b3f9cf78a8c5"], "ambiguous_patch_ids": ["5d86834128896d8abb2bc88737d46417"]}}], "category_label": "Performance", "url": "/docs/compare/?release=17.0#17.0-fc17ec75c507fdfc", "migration": false}, {"id": "17.0-0bc8c9276c429f9c", "cves": [], "html": "<p>Optimize vacuuming of relations with no indexes (Melanie Plageman) <a href=\"https://postgr.es/c/c120550ed\">\u00a7</a></p>", "text": "Optimize vacuuming of relations with no indexes (Melanie Plageman) \u00a7", "title": "Optimize vacuuming of relations with no indexes", "commits": ["c120550ed"], "section": "Server / General Performance", "category": "performance", "source_url": "/docs/release/17.0/#RELEASE-17-PERFORMANCE", "source_hash": "26bdc93a519bcef710427cb4162833e37bc622f782d89cf18292a5115e90c369", "section_path": ["Server", "General Performance"], "commit_groups": [["c120550ed"]], "identity_text": "Optimize vacuuming of relations with no indexes (Melanie Plageman)", "commit_aliases": ["c120550ed"], "source_commits": ["c120550ed"], "source_entry_id": "17.0/changes/017", "db_id": "29c98733afaed69876880f25a5bd0a3a", "patch_ids": ["ae078cc360de92d7cd946d75c30a97ec"], "statement_hash": "051182da5dd288b44aa410530ab97cf2319fcf1d040f71e6501feac20e3225c8", "relations": [], "category_label": "Performance", "url": "/docs/compare/?release=17.0#17.0-0bc8c9276c429f9c", "migration": false}, {"id": "17.0-52a1101851e29c5d", "cves": [], "html": "<p>Increase default <a href=\"/docs/17/runtime-config-resource.html#GUC-VACUUM-BUFFER-USAGE-LIMIT\">vacuum_buffer_usage_limit</a> to 2MB (Thomas Munro) <a href=\"https://postgr.es/c/98f320eb2\">\u00a7</a></p>", "text": "Increase default vacuum_buffer_usage_limit to 2MB (Thomas Munro) \u00a7", "title": "Increase default vacuum_buffer_usage_limit to 2MB", "commits": ["98f320eb2"], "section": "Server / General Performance", "category": "performance", "source_url": "/docs/release/17.0/#RELEASE-17-PERFORMANCE", "source_hash": "1fc1936feebddb0a83369b1307de0a6397a8d2f1f0ba15bf2accac68978c5868", "section_path": ["Server", "General Performance"], "commit_groups": [["98f320eb2"]], "identity_text": "Increase default guc-vacuum-buffer-usage-limit to 2MB (Thomas Munro)", "commit_aliases": ["98f320eb2"], "source_commits": ["98f320eb2"], "source_entry_id": "17.0/changes/018", "db_id": "429f08850a5507730819360568b7fd60", "patch_ids": ["cf3e200b56ea66a8ac20982966cc7e0a"], "statement_hash": "bff2838d1874f02abef53ccdae72774c30923efed6e73e07eab40437a98f44d2", "relations": [], "category_label": "Performance", "url": "/docs/compare/?release=17.0#17.0-52a1101851e29c5d", "migration": false}, {"id": "17.0-363d2129779a80d5", "cves": [], "html": "<p>Improve performance when checking roles with many memberships (Nathan Bossart) <a href=\"https://postgr.es/c/d365ae705\">\u00a7</a></p>", "text": "Improve performance when checking roles with many memberships (Nathan Bossart) \u00a7", "title": "Improve performance when checking roles with many memberships", "commits": ["d365ae705"], "section": "Server / General Performance", "category": "performance", "source_url": "/docs/release/17.0/#RELEASE-17-PERFORMANCE", "source_hash": "a5bab4fe4e0e2828cdb7f446e61cd01091f63865ddba851fba597fd574eff596", "section_path": ["Server", "General Performance"], "commit_groups": [["d365ae705"]], "identity_text": "Improve performance when checking roles with many memberships (Nathan Bossart)", "commit_aliases": ["d365ae705"], "source_commits": ["d365ae705"], "source_entry_id": "17.0/changes/019", "db_id": "1f69c59a8d7500e2107f67e43c831452", "patch_ids": ["7b48237dcb0079ef5c7120e5c665926b"], "statement_hash": "2000eb2cc1ec0d03372e17fc712f5c63189f1643f6dfccc4f94ce895057a1340", "relations": [], "category_label": "Performance", "url": "/docs/compare/?release=17.0#17.0-363d2129779a80d5", "migration": false}, {"id": "17.0-ef8dbb0c3283fcf0", "cves": [], "html": "<p>Improve performance of heavily-contended <acronym>WAL</acronym> writes (Bharath Rupireddy) <a href=\"https://postgr.es/c/71e4cc6b8\">\u00a7</a></p>", "text": "Improve performance of heavily-contended WAL writes (Bharath Rupireddy) \u00a7", "title": "Improve performance of heavily-contended WAL writes", "commits": ["71e4cc6b8"], "section": "Server / General Performance", "category": "performance", "source_url": "/docs/release/17.0/#RELEASE-17-PERFORMANCE", "source_hash": "b2e271cf4149ed959aa3318289bf0140336306ce01490fb429ce6d7aeec38890", "section_path": ["Server", "General Performance"], "commit_groups": [["71e4cc6b8"]], "identity_text": "Improve performance of heavily-contended WAL writes (Bharath Rupireddy)", "commit_aliases": ["71e4cc6b8"], "source_commits": ["71e4cc6b8"], "source_entry_id": "17.0/changes/020", "db_id": "d375c35da4155ab032e21fbcc476dd77", "patch_ids": ["b054c6c72fb3b0472bab138c84ff4fac"], "statement_hash": "bbb0111fa6745baeacf49d13736b2be398611d2221fb4e8d1f8d3d06c79130e9", "relations": [], "category_label": "Performance", "url": "/docs/compare/?release=17.0#17.0-ef8dbb0c3283fcf0", "migration": false}, {"id": "17.0-ae3eca303b91e181", "cves": [], "html": "<p>Improve performance when transferring large blocks of data to a client (Melih Mutlu) <a href=\"https://postgr.es/c/c4ab7da60\">\u00a7</a></p>", "text": "Improve performance when transferring large blocks of data to a client (Melih Mutlu) \u00a7", "title": "Improve performance when transferring large blocks of data to a client", "commits": ["c4ab7da60"], "section": "Server / General Performance", "category": "performance", "source_url": "/docs/release/17.0/#RELEASE-17-PERFORMANCE", "source_hash": "a9949c4f225707e425c687c60c71aa6f226a4d17fd57a7e488fb8504b40228ff", "section_path": ["Server", "General Performance"], "commit_groups": [["c4ab7da60"]], "identity_text": "Improve performance when transferring large blocks of data to a client (Melih Mutlu)", "commit_aliases": ["c4ab7da60"], "source_commits": ["c4ab7da60"], "source_entry_id": "17.0/changes/021", "db_id": "a8be4eab6c4155c2f1a285c8a63fbf57", "patch_ids": ["4a4db20a21552518a62918f9ed5ac8ae"], "statement_hash": "6c2257fb99e4b22d3aa1a5f070824710925a378ef24d8f53f3ffcb8d508fd612", "relations": [], "category_label": "Performance", "url": "/docs/compare/?release=17.0#17.0-ae3eca303b91e181", "migration": false}, {"id": "17.0-151769829143be40", "cves": [], "html": "<p>Allow the grouping of file system reads with the new system variable <a href=\"/docs/17/runtime-config-resource.html#GUC-IO-COMBINE-LIMIT\">io_combine_limit</a> (Thomas Munro, Andres Freund, Melanie Plageman, Nazir Bilal Yavuz) <a href=\"https://postgr.es/c/210622c60\">\u00a7</a> <a href=\"https://postgr.es/c/b7b0f3f27\">\u00a7</a> <a href=\"https://postgr.es/c/041b96802\">\u00a7</a></p>", "text": "Allow the grouping of file system reads with the new system variable io_combine_limit (Thomas Munro, Andres Freund, Melanie Plageman, Nazir Bilal Yavuz) \u00a7 \u00a7 \u00a7", "title": "Allow the grouping of file system reads with the new system variable io_combine_limit", "commits": ["041b96802", "210622c60", "b7b0f3f27"], "section": "Server / General Performance", "category": "performance", "source_url": "/docs/release/17.0/#RELEASE-17-PERFORMANCE", "source_hash": "7a996e1e8d1e0db680837628d2311fd11fd77b422463dd8a5766b3f76e04a227", "section_path": ["Server", "General Performance"], "commit_groups": [["041b96802"], ["210622c60"], ["b7b0f3f27"]], "identity_text": "Allow the grouping of file system reads with the new system variable guc-io-combine-limit (Thomas Munro, Andres Freund, Melanie Plageman, Nazir Bilal Yavuz)", "commit_aliases": ["041b96802", "210622c60", "b7b0f3f27"], "source_commits": ["041b96802", "210622c60", "b7b0f3f27"], "source_entry_id": "17.0/changes/022", "db_id": "12c213ac3532e0b672d8cd5c054de3b6", "patch_ids": ["71aa6e0943bc5420ec25b6b9d9ae11f8", "bfe9972f87a328ed7f16052e6163b069", "c61f80906577b0b3bb271a25cce60613"], "statement_hash": "b28444131aae3fe1f2a3b05878dddf96908adb9beb611ecfc33ce2fbc1d3704f", "relations": [], "category_label": "Performance", "url": "/docs/compare/?release=17.0#17.0-151769829143be40", "migration": false}, {"id": "17.0-7c53db5cefb7cf34", "cves": [], "html": "<p>Create system view <a href=\"/docs/17/monitoring-stats.html#MONITORING-PG-STAT-CHECKPOINTER-VIEW\" title=\"27.2.15.\u00a0pg_stat_checkpointer\"><code>pg_stat_checkpointer</code></a> (Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov) <a href=\"https://postgr.es/c/96f052613\">\u00a7</a> <a href=\"https://postgr.es/c/12915a58e\">\u00a7</a> <a href=\"https://postgr.es/c/e820db5b5\">\u00a7</a></p>\n<p>Relevant columns have been removed from <a href=\"/docs/17/monitoring-stats.html#PG-STAT-BGWRITER-VIEW\" title=\"Table\u00a027.24.\u00a0pg_stat_bgwriter View\"><code>pg_stat_bgwriter</code></a> and added to this new system view.</p>", "text": "Create system view pg_stat_checkpointer (Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov) \u00a7 \u00a7 \u00a7 Relevant columns have been removed from pg_stat_bgwriter and added to this new system view.", "title": "Create system view pg_stat_checkpointer", "commits": ["12915a58e", "96f052613", "e820db5b5"], "section": "Server / Monitoring", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MONITORING", "source_hash": "ce6909ffeb67901e0f2084b59385aa14d039d7b745560d56de4fae9972193996", "section_path": ["Server", "Monitoring"], "commit_groups": [["12915a58e"], ["96f052613"], ["e820db5b5"]], "identity_text": "Create system view pg_stat_checkpointer (Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov) Relevant columns have been removed from pg_stat_bgwriter and added to this new system view.", "commit_aliases": ["12915a58e", "96f052613", "e820db5b5"], "source_commits": ["12915a58e", "96f052613", "e820db5b5"], "source_entry_id": "17.0/changes/023", "db_id": "4ff4dee639ca21ea61f8cdea1ee7877a", "patch_ids": ["087f770ccd9135f0e8e89744ec2a27a6", "742374f840e495b68971a6443adcdbc2", "cb09d0627a3b7b094f7b77724f47a27d"], "statement_hash": "bee5193ee322640d95b37ce95b101f1ab5429c4e2d2c28f0a6b8614b7a3cd6d0", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-7c53db5cefb7cf34", "migration": false}, {"id": "17.0-c1f07adb4760a273", "cves": [], "html": "<p>Improve control over resetting statistics (Atsushi Torikoshi, Bharath Rupireddy) <a href=\"https://postgr.es/c/23c8c0c8f\">\u00a7</a> <a href=\"https://postgr.es/c/2e8a0edc2\">\u00a7</a> <a href=\"https://postgr.es/c/e5cca6288\">\u00a7</a></p>\n<p>Allow <a href=\"/docs/17/monitoring-stats.html#MONITORING-STATS-FUNCS-TABLE\" title=\"Table\u00a027.36.\u00a0Additional Statistics Functions\"><code>pg_stat_reset_shared()</code></a> (with no arguments) and pg_stat_reset_shared(<code>NULL</code>) to reset all shared statistics. Allow pg_stat_reset_shared('slru') and <a href=\"/docs/17/monitoring-stats.html#MONITORING-STATS-FUNCS-TABLE\" title=\"Table\u00a027.36.\u00a0Additional Statistics Functions\"><code>pg_stat_reset_slru()</code></a> (with no arguments) to reset <acronym>SLRU</acronym> statistics, which was already possible with pg_stat_reset_slru(NULL).</p>", "text": "Improve control over resetting statistics (Atsushi Torikoshi, Bharath Rupireddy) \u00a7 \u00a7 \u00a7 Allow pg_stat_reset_shared() (with no arguments) and pg_stat_reset_shared(NULL) to reset all shared statistics. Allow pg_stat_reset_shared('slru') and pg_stat_reset_slru() (with no arguments) to reset SLRU statistics, which was already possible with pg_stat_reset_slru(NULL).", "title": "Improve control over resetting statistics", "commits": ["23c8c0c8f", "2e8a0edc2", "e5cca6288"], "section": "Server / Monitoring", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MONITORING", "source_hash": "2bd79591fd925d674f888e34fecb0fd89ffba2a3e3706b105378a61942507b7e", "section_path": ["Server", "Monitoring"], "commit_groups": [["23c8c0c8f"], ["2e8a0edc2"], ["e5cca6288"]], "identity_text": "Improve control over resetting statistics (Atsushi Torikoshi, Bharath Rupireddy) Allow pg_stat_reset_shared() (with no arguments) and pg_stat_reset_shared(NULL) to reset all shared statistics. Allow pg_stat_reset_shared('slru') and pg_stat_reset_slru() (with no arguments) to reset SLRU statistics, which was already possible with pg_stat_reset_slru(NULL).", "commit_aliases": ["23c8c0c8f", "2e8a0edc2", "e5cca6288"], "source_commits": ["23c8c0c8f", "2e8a0edc2", "e5cca6288"], "source_entry_id": "17.0/changes/024", "db_id": "f2b5aa80f146d0e7d1b3950b4f9af0a5", "patch_ids": ["0f89436d4abd3658e358b0083424c2db", "152cf4781cee5381f1b3c3c707b98b2a", "2a691e57c66c1c257390331e256a72b5"], "statement_hash": "ba0121413efd5b7bea0783769e5fe956746dd08cd6f5982f7e2aaed3f69424f2", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-c1f07adb4760a273", "migration": false}, {"id": "17.0-9db6dad3f95e0468", "cves": [], "html": "<p>Add log messages related to <acronym>WAL</acronym> recovery from backups (Andres Freund) <a href=\"https://postgr.es/c/1d35f705e\">\u00a7</a></p>", "text": "Add log messages related to WAL recovery from backups (Andres Freund) \u00a7", "title": "Add log messages related to WAL recovery from backups", "commits": ["1d35f705e"], "section": "Server / Monitoring", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MONITORING", "source_hash": "af3649c1b838530888d2aaff89eef7b48875e6620e0b1d10f9ac0d5500e874a9", "section_path": ["Server", "Monitoring"], "commit_groups": [["1d35f705e", "8b34cff33", "edbd1b41a"]], "identity_text": "Add log messages related to WAL recovery from backups (Andres Freund)", "commit_aliases": ["1d35f705e", "8b34cff33", "edbd1b41a"], "source_commits": ["1d35f705e"], "source_entry_id": "17.0/changes/025", "db_id": "081db8f02dd3ff1c924983d249d21687", "patch_ids": ["a50efcd5666996dbc2b769e9fc73c42b"], "statement_hash": "78b1925536a684c59f0def51c40edf65a3f0ebed9c67f9fe2d98be549b76a0c0", "relations": [{"rule": 2, "type": "related", "target": "9cd394066681d267db871196e7aac9a5", "evidence": {"same_day": false, "patch_ids": ["a50efcd5666996dbc2b769e9fc73c42b"]}}, {"rule": 2, "type": "related", "target": "d9ceaf3109bc4845b8831721fb3487e2", "evidence": {"same_day": false, "patch_ids": ["a50efcd5666996dbc2b769e9fc73c42b"]}}], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-9db6dad3f95e0468", "migration": false}, {"id": "17.0-cef88ce5771e64b2", "cves": [], "html": "<p>Add <a href=\"/docs/17/runtime-config-logging.html#GUC-LOG-CONNECTIONS\">log_connections</a> log line for <code>trust</code> connections (Jacob Champion) <a href=\"https://postgr.es/c/e48b19c5d\">\u00a7</a></p>", "text": "Add log_connections log line for trust connections (Jacob Champion) \u00a7", "title": "Add log_connections log line for trust connections", "commits": ["e48b19c5d"], "section": "Server / Monitoring", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MONITORING", "source_hash": "b2770477ea3879a0752b2f4622db20222820342b3484b16498ca54d5a5b029b3", "section_path": ["Server", "Monitoring"], "commit_groups": [["e48b19c5d"]], "identity_text": "Add guc-log-connections log line for trust connections (Jacob Champion)", "commit_aliases": ["e48b19c5d"], "source_commits": ["e48b19c5d"], "source_entry_id": "17.0/changes/026", "db_id": "02d50f684e092404a61af07389c7bccb", "patch_ids": ["367c956098d0ca49d5c002320e082720"], "statement_hash": "827565d027538fdb6b92ada1eb79111f76750202d2af887855dd09d2dc7d19d5", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-cef88ce5771e64b2", "migration": false}, {"id": "17.0-28102e564749807a", "cves": [], "html": "<p>Add log message to report walsender acquisition and release of replication slots (Bharath Rupireddy) <a href=\"https://postgr.es/c/7c3fb505b\">\u00a7</a></p>\n<p>This is enabled by the server variable <a href=\"/docs/17/runtime-config-logging.html#GUC-LOG-REPLICATION-COMMANDS\">log_replication_commands</a>.</p>", "text": "Add log message to report walsender acquisition and release of replication slots (Bharath Rupireddy) \u00a7 This is enabled by the server variable log_replication_commands.", "title": "Add log message to report walsender acquisition and release of replication slots", "commits": ["7c3fb505b"], "section": "Server / Monitoring", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MONITORING", "source_hash": "9699908c99c547ef170b47cee317c402c77d68df6edde33ed1a057ca77b7797f", "section_path": ["Server", "Monitoring"], "commit_groups": [["7c3fb505b"]], "identity_text": "Add log message to report walsender acquisition and release of replication slots (Bharath Rupireddy) This is enabled by the server variable guc-log-replication-commands .", "commit_aliases": ["7c3fb505b"], "source_commits": ["7c3fb505b"], "source_entry_id": "17.0/changes/027", "db_id": "ec20bac29969bfab10f2f2d62b191d5d", "patch_ids": ["eb924a0f2df506f5b700628a7f5f135e"], "statement_hash": "a98d6d9118479d4d4468c7e9487cc5017f02a43d3407d392d798108681b22d9e", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-28102e564749807a", "migration": false}, {"id": "17.0-08d7d74f2d06dee1", "cves": [], "html": "<p>Add system view <a href=\"/docs/17/view-pg-wait-events.html\" title=\"52.36.\u00a0pg_wait_events\"><code>pg_wait_events</code></a> that reports wait event types (Bertrand Drouvot) <a href=\"https://postgr.es/c/1e68e43d3\">\u00a7</a></p>\n<p>This is useful for adding descriptions to wait events reported in <a href=\"/docs/17/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW\" title=\"27.2.3.\u00a0pg_stat_activity\"><code>pg_stat_activity</code></a>.</p>", "text": "Add system view pg_wait_events that reports wait event types (Bertrand Drouvot) \u00a7 This is useful for adding descriptions to wait events reported in pg_stat_activity.", "title": "Add system view pg_wait_events that reports wait event types", "commits": ["1e68e43d3"], "section": "Server / Monitoring", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MONITORING", "source_hash": "27ae26ad8cc5a2d1f7096ed1606a2483d06a7583c94f6a42df8c254dad756062", "section_path": ["Server", "Monitoring"], "commit_groups": [["1e68e43d3"]], "identity_text": "Add system view pg_wait_events that reports wait event types (Bertrand Drouvot) This is useful for adding descriptions to wait events reported in pg_stat_activity.", "commit_aliases": ["1e68e43d3"], "source_commits": ["1e68e43d3"], "source_entry_id": "17.0/changes/028", "db_id": "67eefbc682ee74a140bbc4e7ab7052e5", "patch_ids": ["afdfc65550d7b2d8273774dc2a6ad40e"], "statement_hash": "329e0406b985caaef112b3b714b1bd1e659323b624f805878ddabd3c1a8db9d5", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-08d7d74f2d06dee1", "migration": false}, {"id": "17.0-8f44c3fd83286c80", "cves": [], "html": "<p>Add <a href=\"/docs/17/view-pg-wait-events.html\" title=\"52.36.\u00a0pg_wait_events\">wait events</a> for checkpoint delays (Thomas Munro) <a href=\"https://postgr.es/c/0013ba290\">\u00a7</a></p>", "text": "Add wait events for checkpoint delays (Thomas Munro) \u00a7", "title": "Add wait events for checkpoint delays", "commits": ["0013ba290"], "section": "Server / Monitoring", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MONITORING", "source_hash": "fb2754377ad0fca7e28ef81cd3ac93708f772f02907fc3fd4102022d576e893c", "section_path": ["Server", "Monitoring"], "commit_groups": [["0013ba290"]], "identity_text": "Add wait events for checkpoint delays (Thomas Munro)", "commit_aliases": ["0013ba290"], "source_commits": ["0013ba290"], "source_entry_id": "17.0/changes/029", "db_id": "7ee802098f5e08ab4d48921edb84ad78", "patch_ids": ["7c35d8c42f00048e52b9c7bf593aedc9"], "statement_hash": "b8e3d1ea661bb8a6e52340233d110d5db405b0b4f710584f8c62526cd899e27a", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-8f44c3fd83286c80", "migration": false}, {"id": "17.0-a98b391612dba5e9", "cves": [], "html": "<p>Allow vacuum to report the progress of index processing (Sami Imseih) <a href=\"https://postgr.es/c/46ebdfe16\">\u00a7</a></p>\n<p>This appears in system view <a href=\"/docs/17/progress-reporting.html#PG-STAT-PROGRESS-VACUUM-VIEW\" title=\"Table\u00a027.45.\u00a0pg_stat_progress_vacuum View\"><code>pg_stat_progress_vacuum</code></a> columns <code>indexes_total</code> and <code>indexes_processed</code>.</p>", "text": "Allow vacuum to report the progress of index processing (Sami Imseih) \u00a7 This appears in system view pg_stat_progress_vacuum columns indexes_total and indexes_processed.", "title": "Allow vacuum to report the progress of index processing", "commits": ["46ebdfe16"], "section": "Server / Monitoring", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MONITORING", "source_hash": "dd8e0f3197528258609dfe0022a57bef954c7b0484009a66e8fe0080c848fb24", "section_path": ["Server", "Monitoring"], "commit_groups": [["46ebdfe16"]], "identity_text": "Allow vacuum to report the progress of index processing (Sami Imseih) This appears in system view pg_stat_progress_vacuum columns indexes_total and indexes_processed.", "commit_aliases": ["46ebdfe16"], "source_commits": ["46ebdfe16"], "source_entry_id": "17.0/changes/030", "db_id": "c5c7cbdb59e6deed181907c953124138", "patch_ids": ["cafdf10d5ba59268c2e85d53aee580a0"], "statement_hash": "d23ac243a7bc5d546cf7df7711bfbc19cc0cd0c8e50d156dfcfd6e2a22e51987", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-a98b391612dba5e9", "migration": false}, {"id": "17.0-0cd60bdc5ec4f14d", "cves": [], "html": "<p>Allow granting the right to perform maintenance operations (Nathan Bossart) <a href=\"https://postgr.es/c/ecb0fd337\">\u00a7</a></p>\n<p>The permission can be granted on a per-table basis using the <a href=\"/docs/17/ddl-priv.html#DDL-PRIV-MAINTAIN\"><code>MAINTAIN</code></a> privilege and on a per-role basis via the <a href=\"/docs/17/predefined-roles.html\" title=\"21.5.\u00a0Predefined Roles\"><code>pg_maintain</code></a> predefined role. Permitted operations are <code>VACUUM</code>, <code>ANALYZE</code>, <code>REINDEX</code>, <code>REFRESH MATERIALIZED VIEW</code>, <code>CLUSTER</code>, and <code>LOCK TABLE</code>.</p>", "text": "Allow granting the right to perform maintenance operations (Nathan Bossart) \u00a7 The permission can be granted on a per-table basis using the MAINTAIN privilege and on a per-role basis via the pg_maintain predefined role. Permitted operations are VACUUM, ANALYZE, REINDEX, REFRESH MATERIALIZED VIEW, CLUSTER, and LOCK TABLE.", "title": "Allow granting the right to perform maintenance operations", "commits": ["ecb0fd337"], "section": "Server / Privileges", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PRIVILEGES", "source_hash": "1d5e47f964ed6d3c4db011ee49c95929bb92fe66f0dc0079b44508d70c910573", "section_path": ["Server", "Privileges"], "commit_groups": [["ecb0fd337"]], "identity_text": "Allow granting the right to perform maintenance operations (Nathan Bossart) The permission can be granted on a per-table basis using the MAINTAIN privilege and on a per-role basis via the pg_maintain predefined role. Permitted operations are VACUUM, ANALYZE, REINDEX, REFRESH MATERIALIZED VIEW, CLUSTER, and LOCK TABLE.", "commit_aliases": ["ecb0fd337"], "source_commits": ["ecb0fd337"], "source_entry_id": "17.0/changes/031", "db_id": "3c4ad5da1b8247231d399e670b07da7b", "patch_ids": ["aa0b503bc887127b8e5d3149c16e07e0"], "statement_hash": "fbeffe8eb5d4d5b6245edb61861482563d36590033be7d0d70030a552a3060a6", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-0cd60bdc5ec4f14d", "migration": false}, {"id": "17.0-3a6ebe82860567c8", "cves": [], "html": "<p>Allow roles with <a href=\"/docs/17/predefined-roles.html\" title=\"21.5.\u00a0Predefined Roles\"><code>pg_monitor</code></a> membership to execute <a href=\"/docs/17/functions-info.html#FUNCTIONS-INFO-SESSION-TABLE\" title=\"Table\u00a09.69.\u00a0Session Information Functions\"><code>pg_current_logfile()</code></a> (Pavlo Golub, Nathan Bossart) <a href=\"https://postgr.es/c/8d8afd48d\">\u00a7</a></p>", "text": "Allow roles with pg_monitor membership to execute pg_current_logfile() (Pavlo Golub, Nathan Bossart) \u00a7", "title": "Allow roles with pg_monitor membership to execute pg_current_logfile()", "commits": ["8d8afd48d"], "section": "Server / Privileges", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PRIVILEGES", "source_hash": "2d6c7cb9d2c173633f6483c902dd8d68d8d9c2a9a31987a180db5fcce92f59d6", "section_path": ["Server", "Privileges"], "commit_groups": [["8d8afd48d"]], "identity_text": "Allow roles with pg_monitor membership to execute pg_current_logfile() (Pavlo Golub, Nathan Bossart)", "commit_aliases": ["8d8afd48d"], "source_commits": ["8d8afd48d"], "source_entry_id": "17.0/changes/032", "db_id": "be8e2a4581679bfeccefddd4e31fb152", "patch_ids": ["57582ff9912b3675cea8b711467c32f9"], "statement_hash": "4b700a41fc70986c9af65fcbfa4bc4b6947ef052353d2930f51bbbd63c125f38", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-3a6ebe82860567c8", "migration": false}, {"id": "17.0-b4acbd3ec57e07ba", "cves": [], "html": "<p>Add system variable <a href=\"/docs/17/runtime-config-compatible.html#GUC-ALLOW-ALTER-SYSTEM\">allow_alter_system</a> to disallow <a href=\"/docs/17/sql-altersystem.html\" title=\"ALTER SYSTEM\"><code>ALTER SYSTEM</code></a> (Jelte Fennema-Nio, Gabriele Bartolini) <a href=\"https://postgr.es/c/d3ae2a24f\">\u00a7</a></p>", "text": "Add system variable allow_alter_system to disallow ALTER SYSTEM (Jelte Fennema-Nio, Gabriele Bartolini) \u00a7", "title": "Add system variable allow_alter_system to disallow ALTER SYSTEM", "commits": ["d3ae2a24f"], "section": "Server / Server Configuration", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-CONFIG", "source_hash": "88f6127163180e0ee409226148bb35afa26ada14b246c3a228571a4ed17c822e", "section_path": ["Server", "Server Configuration"], "commit_groups": [["d3ae2a24f"]], "identity_text": "Add system variable guc-allow-alter-system to disallow ALTER SYSTEM (Jelte Fennema-Nio, Gabriele Bartolini)", "commit_aliases": ["d3ae2a24f"], "source_commits": ["d3ae2a24f"], "source_entry_id": "17.0/changes/033", "db_id": "335f4d3b5a3daa9f992752bf2706358a", "patch_ids": ["f07abd4c68f23ba492eb27978c766e3b"], "statement_hash": "a19a91db051058837f8011545c9f3ca2adc6e84f1672ee35bbaa8ab0a4d3c9b6", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-b4acbd3ec57e07ba", "migration": false}, {"id": "17.0-a6b1eeb21f7c822b", "cves": [], "html": "<p>Allow <a href=\"/docs/17/sql-altersystem.html\" title=\"ALTER SYSTEM\"><code>ALTER SYSTEM</code></a> to set unrecognized custom server variables (Tom Lane) <a href=\"https://postgr.es/c/2d870b4ae\">\u00a7</a></p>\n<p>This is also possible with <a href=\"/docs/17/sql-grant.html\" title=\"GRANT\"><code>GRANT ON PARAMETER</code></a>.</p>", "text": "Allow ALTER SYSTEM to set unrecognized custom server variables (Tom Lane) \u00a7 This is also possible with GRANT ON PARAMETER.", "title": "Allow ALTER SYSTEM to set unrecognized custom server variables", "commits": ["2d870b4ae"], "section": "Server / Server Configuration", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-CONFIG", "source_hash": "5f355187378d93868a4a735da861f0b9756a645332b772d73b1a693de5a16923", "section_path": ["Server", "Server Configuration"], "commit_groups": [["2d870b4ae"]], "identity_text": "Allow ALTER SYSTEM to set unrecognized custom server variables (Tom Lane) This is also possible with GRANT ON PARAMETER.", "commit_aliases": ["2d870b4ae"], "source_commits": ["2d870b4ae"], "source_entry_id": "17.0/changes/034", "db_id": "18f85cfff077cc490ddbf8bbe52f2412", "patch_ids": ["0814af1fa093fb0ae26328d389428103"], "statement_hash": "81b4c4a9af4b2cc85dac9d6228b2b19809d7bf4f1c7c31ea9113f4c316922600", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-a6b1eeb21f7c822b", "migration": false}, {"id": "17.0-68f6608b1b6dcb30", "cves": [], "html": "<p>Add server variable <a href=\"/docs/17/runtime-config-client.html#GUC-TRANSACTION-TIMEOUT\">transaction_timeout</a> to restrict the duration of transactions (Andrey Borodin, Japin Li, Junwang Zhao, Alexander Korotkov) <a href=\"https://postgr.es/c/51efe38cb\">\u00a7</a> <a href=\"https://postgr.es/c/bf82f4379\">\u00a7</a> <a href=\"https://postgr.es/c/28e858c0f\">\u00a7</a></p>", "text": "Add server variable transaction_timeout to restrict the duration of transactions (Andrey Borodin, Japin Li, Junwang Zhao, Alexander Korotkov) \u00a7 \u00a7 \u00a7", "title": "Add server variable transaction_timeout to restrict the duration of transactions", "commits": ["28e858c0f", "51efe38cb", "bf82f4379"], "section": "Server / Server Configuration", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-CONFIG", "source_hash": "7efb34482473dc8d860ad251f06b16387566a0c5cecbacc45c4847699d4eca42", "section_path": ["Server", "Server Configuration"], "commit_groups": [["28e858c0f"], ["51efe38cb"], ["bf82f4379"]], "identity_text": "Add server variable guc-transaction-timeout to restrict the duration of transactions (Andrey Borodin, Japin Li, Junwang Zhao, Alexander Korotkov)", "commit_aliases": ["28e858c0f", "51efe38cb", "bf82f4379"], "source_commits": ["28e858c0f", "51efe38cb", "bf82f4379"], "source_entry_id": "17.0/changes/035", "db_id": "718259631ded99b83361d9b63bd7fc36", "patch_ids": ["0c1e32e9c9b95597272ee20eaf39589f", "87004e34539666104318fc5a57fe0afa", "ffd30a9d40012c5126cd91352005d8de"], "statement_hash": "72d219d30d9e9405506944e5452bf1f7437dd8c634c2e7e22989da39ad97a388", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-68f6608b1b6dcb30", "migration": false}, {"id": "17.0-5ef5c5ed2324f757", "cves": [], "html": "<p>Add a builtin platform-independent collation provider (Jeff Davis) <a href=\"https://postgr.es/c/2d819a08a\">\u00a7</a> <a href=\"https://postgr.es/c/846311051\">\u00a7</a> <a href=\"https://postgr.es/c/f69319f2f\">\u00a7</a> <a href=\"https://postgr.es/c/9acae56ce\">\u00a7</a></p>\n<p>This supports <code>C</code> and <code>C.UTF-8</code> collations.</p>", "text": "Add a builtin platform-independent collation provider (Jeff Davis) \u00a7 \u00a7 \u00a7 \u00a7 This supports C and C.UTF-8 collations.", "title": "Add a builtin platform-independent collation provider", "commits": ["2d819a08a", "846311051", "9acae56ce", "f69319f2f"], "section": "Server / Server Configuration", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-CONFIG", "source_hash": "15e2a4736d4126ffb9a59333bece9b7c6bb80c6464d093d609cead3be54ea0bc", "section_path": ["Server", "Server Configuration"], "commit_groups": [["2d819a08a"], ["846311051"], ["9acae56ce"], ["f69319f2f"]], "identity_text": "Add a builtin platform-independent collation provider (Jeff Davis) This supports C and C.UTF-8 collations.", "commit_aliases": ["2d819a08a", "846311051", "9acae56ce", "f69319f2f"], "source_commits": ["2d819a08a", "846311051", "9acae56ce", "f69319f2f"], "source_entry_id": "17.0/changes/036", "db_id": "80852fc36fa7987f1b089fc75f650204", "patch_ids": ["77be7335caaca5f9f06322d0797dda16", "81b6c4acbac9af2cc2bfef96cfd4b979", "c6ec2a1be78682d39fea62d97b958f98", "d64c324506fdd1d1f8e1dd79d3f4cfbe"], "statement_hash": "fbdf39f367ad8a7a21b34d7dc4dc5678b7f15eb4badce77f508c44b61e86d345", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-5ef5c5ed2324f757", "migration": false}, {"id": "17.0-a306e17b29484a1c", "cves": [], "html": "<p>Add server variable <a href=\"/docs/17/runtime-config-preset.html#GUC-HUGE-PAGES-STATUS\">huge_pages_status</a> to report the use of huge pages by Postgres (Justin Pryzby) <a href=\"https://postgr.es/c/a14354cac\">\u00a7</a></p>\n<p>This is useful when <a href=\"/docs/17/runtime-config-resource.html#GUC-HUGE-PAGES\">huge_pages</a> is set to <code>try</code>.</p>", "text": "Add server variable huge_pages_status to report the use of huge pages by Postgres (Justin Pryzby) \u00a7 This is useful when huge_pages is set to try.", "title": "Add server variable huge_pages_status to report the use of huge pages by Postgres", "commits": ["a14354cac"], "section": "Server / Server Configuration", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-CONFIG", "source_hash": "122def5713c23eca2319d4626106646ed060bb64889d75fb851f397cb0ca7aff", "section_path": ["Server", "Server Configuration"], "commit_groups": [["a14354cac"]], "identity_text": "Add server variable guc-huge-pages-status to report the use of huge pages by Postgres (Justin Pryzby) This is useful when guc-huge-pages is set to try.", "commit_aliases": ["a14354cac"], "source_commits": ["a14354cac"], "source_entry_id": "17.0/changes/037", "db_id": "586987595a4170d7f74933b5f5dd5a46", "patch_ids": ["89c68b0b4082f533e10998c466dd35b6"], "statement_hash": "9a20765c86381cbf363b707e1acc20d471444cfb30caed24a1ba11b2246d2dd7", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-a306e17b29484a1c", "migration": false}, {"id": "17.0-8e72047c09b023e1", "cves": [], "html": "<p>Add server variable to disable event triggers (Daniel Gustafsson) <a href=\"https://postgr.es/c/7750fefdb\">\u00a7</a></p>\n<p>The setting, <a href=\"/docs/17/runtime-config-client.html#GUC-EVENT-TRIGGERS\">event_triggers</a>, allows for the temporary disabling of event triggers for debugging.</p>", "text": "Add server variable to disable event triggers (Daniel Gustafsson) \u00a7 The setting, event_triggers, allows for the temporary disabling of event triggers for debugging.", "title": "Add server variable to disable event triggers", "commits": ["7750fefdb"], "section": "Server / Server Configuration", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-CONFIG", "source_hash": "ce85c487050389af10d7375dba26b6b3636e76b8910d87d57f2ee1733b61b1e3", "section_path": ["Server", "Server Configuration"], "commit_groups": [["7750fefdb"]], "identity_text": "Add server variable to disable event triggers (Daniel Gustafsson) The setting, guc-event-triggers , allows for the temporary disabling of event triggers for debugging.", "commit_aliases": ["7750fefdb"], "source_commits": ["7750fefdb"], "source_entry_id": "17.0/changes/038", "db_id": "4b72618efd9956e3f676b7b80a796d3f", "patch_ids": ["8a7e47813e342e8c2228ebfe7fb76262"], "statement_hash": "a78fa35cf15a5c3a4d0f75d835c41c9257e8b5eff0454787a9a089070f104ae2", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-8e72047c09b023e1", "migration": false}, {"id": "17.0-401e8de226ab9325", "cves": [], "html": "<p>Allow the <a href=\"/docs/17/monitoring-stats.html#MONITORING-PG-STAT-SLRU-VIEW\" title=\"27.2.25.\u00a0pg_stat_slru\"><acronym>SLRU</acronym></a> cache sizes to be configured (Andrey Borodin, Dilip Kumar, Alvaro Herrera) <a href=\"https://postgr.es/c/53c2a97a9\">\u00a7</a></p>\n<p>The new server variables are <a href=\"/docs/17/runtime-config-resource.html#GUC-COMMIT-TIMESTAMP-BUFFERS\">commit_timestamp_buffers</a>, <a href=\"/docs/17/runtime-config-resource.html#GUC-MULTIXACT-MEMBER-BUFFERS\">multixact_member_buffers</a>, <a href=\"/docs/17/runtime-config-resource.html#GUC-MULTIXACT-OFFSET-BUFFERS\">multixact_offset_buffers</a>, <a href=\"/docs/17/runtime-config-resource.html#GUC-NOTIFY-BUFFERS\">notify_buffers</a>, <a href=\"/docs/17/runtime-config-resource.html#GUC-SERIALIZABLE-BUFFERS\">serializable_buffers</a>, <a href=\"/docs/17/runtime-config-resource.html#GUC-SUBTRANSACTION-BUFFERS\">subtransaction_buffers</a>, and <a href=\"/docs/17/runtime-config-resource.html#GUC-TRANSACTION-BUFFERS\">transaction_buffers</a>. <a href=\"/docs/17/runtime-config-resource.html#GUC-COMMIT-TIMESTAMP-BUFFERS\">commit_timestamp_buffers</a>, <a href=\"/docs/17/runtime-config-resource.html#GUC-TRANSACTION-BUFFERS\">transaction_buffers</a>, and <a href=\"/docs/17/runtime-config-resource.html#GUC-SUBTRANSACTION-BUFFERS\">subtransaction_buffers</a> scale up automatically with <a href=\"/docs/17/runtime-config-resource.html#GUC-SHARED-BUFFERS\">shared_buffers</a>.</p>", "text": "Allow the SLRU cache sizes to be configured (Andrey Borodin, Dilip Kumar, Alvaro Herrera) \u00a7 The new server variables are commit_timestamp_buffers, multixact_member_buffers, multixact_offset_buffers, notify_buffers, serializable_buffers, subtransaction_buffers, and transaction_buffers. commit_timestamp_buffers, transaction_buffers, and subtransaction_buffers scale up automatically with shared_buffers.", "title": "Allow the SLRU cache sizes to be configured", "commits": ["53c2a97a9"], "section": "Server / Server Configuration", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-CONFIG", "source_hash": "6882b1afc0cfb0edf0a305155b1bfeee49505c75e159d2908fe7dded3370087d", "section_path": ["Server", "Server Configuration"], "commit_groups": [["53c2a97a9"]], "identity_text": "Allow the SLRU cache sizes to be configured (Andrey Borodin, Dilip Kumar, Alvaro Herrera) The new server variables are guc-commit-timestamp-buffers , guc-multixact-member-buffers , guc-multixact-offset-buffers , guc-notify-buffers , guc-serializable-buffers , guc-subtransaction-buffers , and guc-transaction-buffers . guc-commit-timestamp-buffers , guc-transaction-buffers , and guc-subtransaction-buffers scale up automatically with guc-shared-buffers .", "commit_aliases": ["53c2a97a9"], "source_commits": ["53c2a97a9"], "source_entry_id": "17.0/changes/039", "db_id": "054128c86cceaeccedc6fb785d67772f", "patch_ids": ["d22fe7881bafeca870baef76553a72ff"], "statement_hash": "7b33810afb851570f8c712e0489c6284bff4903bfc6947e2ceae3d857387e453", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-401e8de226ab9325", "migration": false}, {"id": "17.0-a2ffbdd97c0a238d", "cves": [], "html": "<p>Add support for incremental file system backup (Robert Haas, Jakub Wartak, Tomas Vondra) <a href=\"https://postgr.es/c/dc2123400\">\u00a7</a> <a href=\"https://postgr.es/c/f8ce4ed78\">\u00a7</a></p>\n<p>Incremental backups can be created using <a href=\"/docs/17/app-pgbasebackup.html\" title=\"pg_basebackup\"><span>pg_basebackup</span></a>'s new <code>--incremental</code> option. The new application <a href=\"/docs/17/app-pgcombinebackup.html\" title=\"pg_combinebackup\"><span>pg_combinebackup</span></a> allows manipulation of base and incremental file system backups.</p>", "text": "Add support for incremental file system backup (Robert Haas, Jakub Wartak, Tomas Vondra) \u00a7 \u00a7 Incremental backups can be created using pg_basebackup's new --incremental option. The new application pg_combinebackup allows manipulation of base and incremental file system backups.", "title": "Add support for incremental file system backup", "commits": ["dc2123400", "f8ce4ed78"], "section": "Server / Streaming Replication and Recovery", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-REPLICATION", "source_hash": "53d4d6706e095584dad9b5a2c18559f1d8203b3a29895b8f3731da02db40d59c", "section_path": ["Server", "Streaming Replication and Recovery"], "commit_groups": [["dc2123400"], ["f8ce4ed78"]], "identity_text": "Add support for incremental file system backup (Robert Haas, Jakub Wartak, Tomas Vondra) Incremental backups can be created using pg_basebackup's new --incremental option. The new application pg_combinebackup allows manipulation of base and incremental file system backups.", "commit_aliases": ["dc2123400", "f8ce4ed78"], "source_commits": ["dc2123400", "f8ce4ed78"], "source_entry_id": "17.0/changes/040", "db_id": "908cc33787f32c9dcd434c9726b2a90a", "patch_ids": ["141a067a67701032cf5092dd3dabd2d3", "3a11cab0d645672e4c0425fc530066ea"], "statement_hash": "76b76f7c699fb0ae8c99f721ad1e57cd1f5f3d11b1b1dc8d260d95046b38e08a", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-a2ffbdd97c0a238d", "migration": false}, {"id": "17.0-d98e23fd14c0e9d3", "cves": [], "html": "<p>Allow the creation of <acronym>WAL</acronym> summarization files (Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski) <a href=\"https://postgr.es/c/174c48050\">\u00a7</a> <a href=\"https://postgr.es/c/d97ef756a\">\u00a7</a> <a href=\"https://postgr.es/c/f896057e4\">\u00a7</a> <a href=\"https://postgr.es/c/d9ef650fc\">\u00a7</a></p>\n<p>These files record the block numbers that have changed within an <a href=\"/docs/17/datatype-pg-lsn.html\" title=\"8.20.\u00a0pg_lsn Type\"><acronym>LSN</acronym></a> range and are useful for incremental file system backups. This is controlled by the server variables <a href=\"/docs/17/runtime-config-wal.html#GUC-SUMMARIZE-WAL\">summarize_wal</a> and <a href=\"/docs/17/runtime-config-wal.html#GUC-WAL-SUMMARY-KEEP-TIME\">wal_summary_keep_time</a>, and introspected with <a href=\"/docs/17/functions-info.html#FUNCTIONS-WAL-SUMMARY\" title=\"Table\u00a09.92.\u00a0WAL Summarization Information Functions\"><code>pg_available_wal_summaries()</code></a>, <code>pg_wal_summary_contents()</code>, and <code>pg_get_wal_summarizer_state()</code>.</p>", "text": "Allow the creation of WAL summarization files (Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski) \u00a7 \u00a7 \u00a7 \u00a7 These files record the block numbers that have changed within an LSN range and are useful for incremental file system backups. This is controlled by the server variables summarize_wal and wal_summary_keep_time, and introspected with pg_available_wal_summaries(), pg_wal_summary_contents(), and pg_get_wal_summarizer_state().", "title": "Allow the creation of WAL summarization files", "commits": ["174c48050", "d97ef756a", "d9ef650fc", "f896057e4"], "section": "Server / Streaming Replication and Recovery", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-REPLICATION", "source_hash": "e957080e4a8ff4a994bf36bded8570d4e66a1f39225fc5ab1c66c981d9fa3797", "section_path": ["Server", "Streaming Replication and Recovery"], "commit_groups": [["174c48050"], ["d97ef756a"], ["d9ef650fc"], ["f896057e4"]], "identity_text": "Allow the creation of WAL summarization files (Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski) These files record the block numbers that have changed within an LSN range and are useful for incremental file system backups. This is controlled by the server variables guc-summarize-wal and guc-wal-summary-keep-time , and introspected with pg_available_wal_summaries(), pg_wal_summary_contents(), and pg_get_wal_summarizer_state().", "commit_aliases": ["174c48050", "d97ef756a", "d9ef650fc", "f896057e4"], "source_commits": ["174c48050", "d97ef756a", "d9ef650fc", "f896057e4"], "source_entry_id": "17.0/changes/041", "db_id": "3cfae481b9dc3952fd1d2d10c2226677", "patch_ids": ["0af30f6d76f12ddff15d80cbf3011abd", "33f4516b6fa2cf93517d67160d2141ba", "4872bf1a258073370c7c0f5e333d405b", "8e2191b43c1299f8168150eaebfcc93f"], "statement_hash": "36d2ae84e4b827b48279c35dd15f6e680f1ee0571436c70ceca91d3823845a52", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-d98e23fd14c0e9d3", "migration": false}, {"id": "17.0-361f7f5f42dea690", "cves": [], "html": "<p>Add the system identifier to file system <a href=\"/docs/17/backup-manifest-format.html\" title=\"Chapter\u00a069.\u00a0Backup Manifest Format\">backup manifest</a> files (Amul Sul) <a href=\"https://postgr.es/c/2041bc427\">\u00a7</a></p>\n<p>This helps detect invalid <acronym>WAL</acronym> usage.</p>", "text": "Add the system identifier to file system backup manifest files (Amul Sul) \u00a7 This helps detect invalid WAL usage.", "title": "Add the system identifier to file system backup manifest files", "commits": ["2041bc427"], "section": "Server / Streaming Replication and Recovery", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-REPLICATION", "source_hash": "39983d93905cbdf2473bf697e5107733e558dee8ca0ba47c7ab7360dd505aa78", "section_path": ["Server", "Streaming Replication and Recovery"], "commit_groups": [["2041bc427"]], "identity_text": "Add the system identifier to file system backup manifest files (Amul Sul) This helps detect invalid WAL usage.", "commit_aliases": ["2041bc427"], "source_commits": ["2041bc427"], "source_entry_id": "17.0/changes/042", "db_id": "6e2a2dd91621a281b6443f6be9448cdf", "patch_ids": ["52e80dff2dc717149b68413fccf953b2"], "statement_hash": "2e6e5badf7c93a9f7c90153ea649e08320978b670481f36c4cdc885137c0f6dd", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-361f7f5f42dea690", "migration": false}, {"id": "17.0-a74057f0b3e68ae1", "cves": [], "html": "<p>Allow connection string value <code>dbname</code> to be written when <a href=\"/docs/17/app-pgbasebackup.html\" title=\"pg_basebackup\"><span>pg_basebackup</span></a> writes connection information to <code>postgresql.auto.conf</code> (Vignesh C, Hayato Kuroda) <a href=\"https://postgr.es/c/a145f424d\">\u00a7</a></p>", "text": "Allow connection string value dbname to be written when pg_basebackup writes connection information to postgresql.auto.conf (Vignesh C, Hayato Kuroda) \u00a7", "title": "Allow connection string value dbname to be written when pg_basebackup writes connection information to postgresql.auto.conf", "commits": ["a145f424d"], "section": "Server / Streaming Replication and Recovery", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-REPLICATION", "source_hash": "f5a4189f6ac58a70012aeb1c9a3ae0f4f7b551fa57b3ad15025326d9d6fd83e2", "section_path": ["Server", "Streaming Replication and Recovery"], "commit_groups": [["a145f424d"]], "identity_text": "Allow connection string value dbname to be written when pg_basebackup writes connection information to postgresql.auto.conf (Vignesh C, Hayato Kuroda)", "commit_aliases": ["a145f424d"], "source_commits": ["a145f424d"], "source_entry_id": "17.0/changes/043", "db_id": "df5b4c592c2663c6b6b2966294706337", "patch_ids": ["8a96c256ee8468512b69f6e4ee3bcbdd"], "statement_hash": "64810eaaeb8732246523d4b5acee711061833d0ccf9fdd227710930a3cdaaff0", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-a74057f0b3e68ae1", "migration": false}, {"id": "17.0-772740d57559798b", "cves": [], "html": "<p>Add column <a href=\"/docs/17/view-pg-replication-slots.html\" title=\"52.19.\u00a0pg_replication_slots\"><code>pg_replication_slots</code>.<code>invalidation_reason</code></a> to report the reason for invalid slots (Shveta Malik, Bharath Rupireddy) <a href=\"https://postgr.es/c/007693f2a\">\u00a7</a> <a href=\"https://postgr.es/c/6ae701b43\">\u00a7</a></p>", "text": "Add column pg_replication_slots.invalidation_reason to report the reason for invalid slots (Shveta Malik, Bharath Rupireddy) \u00a7 \u00a7", "title": "Add column pg_replication_slots.invalidation_reason to report the reason for invalid slots", "commits": ["007693f2a", "6ae701b43"], "section": "Server / Streaming Replication and Recovery", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-REPLICATION", "source_hash": "b4d50c607aa978eeb579c940d2b9a4202a4f79fce246f9395d39eb3c77613e30", "section_path": ["Server", "Streaming Replication and Recovery"], "commit_groups": [["007693f2a"], ["6ae701b43"]], "identity_text": "Add column pg_replication_slots.invalidation_reason to report the reason for invalid slots (Shveta Malik, Bharath Rupireddy)", "commit_aliases": ["007693f2a", "6ae701b43"], "source_commits": ["007693f2a", "6ae701b43"], "source_entry_id": "17.0/changes/044", "db_id": "bd3061007fc673bf70970dfbfeb55d08", "patch_ids": ["14f1da7973359b39660fcfe59ff48cc3", "9d580829a5809c9b9aefa1a05bfa78db"], "statement_hash": "aa758625648221fad436441c83da92b6802fa94fe1303ac6dd667c9398f11d3c", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-772740d57559798b", "migration": false}, {"id": "17.0-0f005a3b5caae5e1", "cves": [], "html": "<p>Add column <a href=\"/docs/17/view-pg-replication-slots.html\" title=\"52.19.\u00a0pg_replication_slots\"><code>pg_replication_slots</code>.<code>inactive_since</code></a> to report slot inactivity duration (Bharath Rupireddy) <a href=\"https://postgr.es/c/a11f330b5\">\u00a7</a> <a href=\"https://postgr.es/c/6d49c8d4b\">\u00a7</a> <a href=\"https://postgr.es/c/6f132ed69\">\u00a7</a></p>", "text": "Add column pg_replication_slots.inactive_since to report slot inactivity duration (Bharath Rupireddy) \u00a7 \u00a7 \u00a7", "title": "Add column pg_replication_slots.inactive_since to report slot inactivity duration", "commits": ["6d49c8d4b", "6f132ed69", "a11f330b5"], "section": "Server / Streaming Replication and Recovery", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-REPLICATION", "source_hash": "fb1f343a4366739955feb77a80da72ed28de6d0979ac730dcb05d7746ebc9136", "section_path": ["Server", "Streaming Replication and Recovery"], "commit_groups": [["6d49c8d4b"], ["6f132ed69"], ["a11f330b5"]], "identity_text": "Add column pg_replication_slots.inactive_since to report slot inactivity duration (Bharath Rupireddy)", "commit_aliases": ["6d49c8d4b", "6f132ed69", "a11f330b5"], "source_commits": ["6d49c8d4b", "6f132ed69", "a11f330b5"], "source_entry_id": "17.0/changes/045", "db_id": "126a2f45e2604951effe4cbcfe0a23b7", "patch_ids": ["2f2378cce9a4797a2821d495a96f9801", "6fcb3b366bb79fbb49a97982b1a2fc2b", "73c9f29784a3a938138ec4941147cfcf"], "statement_hash": "8c48bbb47f1e02c7dc5505daf8f2c291f211ce76a8c9e6ae6e8e7fde8a5c69ae", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-0f005a3b5caae5e1", "migration": false}, {"id": "17.0-68fd1ee8284744a0", "cves": [], "html": "<p>Add function <a href=\"/docs/17/functions-admin.html#FUNCTIONS-REPLICATION-TABLE\" title=\"Table\u00a09.99.\u00a0Replication Management Functions\"><code>pg_sync_replication_slots()</code></a> to synchronize logical replication slots (Hou Zhijie, Shveta Malik, Ajin Cherian, Peter Eisentraut) <a href=\"https://postgr.es/c/ddd5f4f54\">\u00a7</a> <a href=\"https://postgr.es/c/7a424ece4\">\u00a7</a></p>", "text": "Add function pg_sync_replication_slots() to synchronize logical replication slots (Hou Zhijie, Shveta Malik, Ajin Cherian, Peter Eisentraut) \u00a7 \u00a7", "title": "Add function pg_sync_replication_slots() to synchronize logical replication slots", "commits": ["7a424ece4", "ddd5f4f54"], "section": "Server / Streaming Replication and Recovery", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-REPLICATION", "source_hash": "b5fed7c2c4c64ce67b18c6f50300e9f3b7f9aa301d650bfd4939c1e7ba82c9ce", "section_path": ["Server", "Streaming Replication and Recovery"], "commit_groups": [["7a424ece4"], ["ddd5f4f54"]], "identity_text": "Add function pg_sync_replication_slots() to synchronize logical replication slots (Hou Zhijie, Shveta Malik, Ajin Cherian, Peter Eisentraut)", "commit_aliases": ["7a424ece4", "ddd5f4f54"], "source_commits": ["7a424ece4", "ddd5f4f54"], "source_entry_id": "17.0/changes/046", "db_id": "c8c655e14dfb4508100100546aec9853", "patch_ids": ["022fd912ba37827f2bcb9d18044894e2", "4c4b9c78e0e2b2d68645e7cbcc7f4481"], "statement_hash": "2d60afa777919cda9a60602da42951ed7b67aa6c9c464e127ff1e1c6c6b344b4", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-68fd1ee8284744a0", "migration": false}, {"id": "17.0-157a46b838d33eab", "cves": [], "html": "<p>Add the <code>failover</code> property to the <a href=\"/docs/17/protocol-replication.html\" title=\"53.4.\u00a0Streaming Replication Protocol\">replication protocol</a> (Hou Zhijie, Shveta Malik) <a href=\"https://postgr.es/c/732924043\">\u00a7</a></p>", "text": "Add the failover property to the replication protocol (Hou Zhijie, Shveta Malik) \u00a7", "title": "Add the failover property to the replication protocol", "commits": ["732924043"], "section": "Server / Streaming Replication and Recovery", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-REPLICATION", "source_hash": "829081c25bfc7a772b12a699f3842754e7d9fd439216f5f3fd71c5e06a225f39", "section_path": ["Server", "Streaming Replication and Recovery"], "commit_groups": [["732924043"]], "identity_text": "Add the failover property to the replication protocol (Hou Zhijie, Shveta Malik)", "commit_aliases": ["732924043"], "source_commits": ["732924043"], "source_entry_id": "17.0/changes/047", "db_id": "317f0c30f6256158bebb45c7506802f7", "patch_ids": ["1051164f270319e76a0f1b5c258ff8ad"], "statement_hash": "a8f3ae3b1baea1a639b8ad1a9b0a8e51a9ee7511bf96da1149f50ce8d74c74ea", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-157a46b838d33eab", "migration": false}, {"id": "17.0-d05af4c0115ae9f9", "cves": [], "html": "<p>Add application <a href=\"/docs/17/app-pgcreatesubscriber.html\" title=\"pg_createsubscriber\"><span>pg_createsubscriber</span></a> to create a logical replica from a physical standby server (Euler Taveira) <a href=\"https://postgr.es/c/d44032d01\">\u00a7</a></p>", "text": "Add application pg_createsubscriber to create a logical replica from a physical standby server (Euler Taveira) \u00a7", "title": "Add application pg_createsubscriber to create a logical replica from a physical standby server", "commits": ["d44032d01"], "section": "Server / Logical Replication", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LOGICAL", "source_hash": "466936f38be5f58de7511dcc6b9a38a2fa7ce4b6f585b83aeb6d6174060b0bee", "section_path": ["Server", "Logical Replication"], "commit_groups": [["d44032d01"]], "identity_text": "Add application pg_createsubscriber to create a logical replica from a physical standby server (Euler Taveira)", "commit_aliases": ["d44032d01"], "source_commits": ["d44032d01"], "source_entry_id": "17.0/changes/048", "db_id": "25c38f5599c3ec62c0eeea763de804ba", "patch_ids": ["47f654ff6a5b0bbd918666de657a7f51"], "statement_hash": "81c9adee62ba1074dc6668d92855ea2f6c0131be9bd0c7162eacdc94aaebb777", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-d05af4c0115ae9f9", "migration": false}, {"id": "17.0-ec05bf529b025e95", "cves": [], "html": "<p>Have <a href=\"/docs/17/pgupgrade.html\" title=\"pg_upgrade\"><span>pg_upgrade</span></a> migrate valid logical slots and subscriptions (Hayato Kuroda, Hou Zhijie, Vignesh C, Julien Rouhaud, Shlok Kyal) <a href=\"https://postgr.es/c/29d0a77fa\">\u00a7</a> <a href=\"https://postgr.es/c/9a17be1e2\">\u00a7</a></p>\n<p>This allows logical replication to continue quickly after the upgrade. This only works for old <span>PostgreSQL</span> clusters that are version 17 or later.</p>", "text": "Have pg_upgrade migrate valid logical slots and subscriptions (Hayato Kuroda, Hou Zhijie, Vignesh C, Julien Rouhaud, Shlok Kyal) \u00a7 \u00a7 This allows logical replication to continue quickly after the upgrade. This only works for old PostgreSQL clusters that are version 17 or later.", "title": "Have pg_upgrade migrate valid logical slots and subscriptions", "commits": ["29d0a77fa", "9a17be1e2"], "section": "Server / Logical Replication", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LOGICAL", "source_hash": "54eeccdb18fb7fd67a8f61d23a838b094fd46401996f83cb044a29d7eaf1a0ee", "section_path": ["Server", "Logical Replication"], "commit_groups": [["29d0a77fa"], ["9a17be1e2"]], "identity_text": "Have pg_upgrade migrate valid logical slots and subscriptions (Hayato Kuroda, Hou Zhijie, Vignesh C, Julien Rouhaud, Shlok Kyal) This allows logical replication to continue quickly after the upgrade. This only works for old PostgreSQL clusters that are version 17 or later.", "commit_aliases": ["29d0a77fa", "9a17be1e2"], "source_commits": ["29d0a77fa", "9a17be1e2"], "source_entry_id": "17.0/changes/049", "db_id": "e7e439b9160cab86c5bf72fcd5dc5ffd", "patch_ids": ["46c515d821dc69b7fb156f5163a38761", "79d297e1202815a7d2282b5617914920"], "statement_hash": "46e644aff19fc32497f2502ae839da451b4b9e32e84dbac888aa1709a3b79c77", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-ec05bf529b025e95", "migration": false}, {"id": "17.0-6bc1e01f860f7749", "cves": [], "html": "<p>Enable the failover of <a href=\"/docs/17/logical-replication-subscription.html#LOGICAL-REPLICATION-SUBSCRIPTION-SLOT\" title=\"29.2.1.\u00a0Replication Slot Management\">logical slots</a> (Hou Zhijie, Shveta Malik, Ajin Cherian) <a href=\"https://postgr.es/c/c393308b6\">\u00a7</a></p>\n<p>This is controlled by an optional fifth argument to <a href=\"/docs/17/functions-admin.html#FUNCTIONS-REPLICATION-TABLE\" title=\"Table\u00a09.99.\u00a0Replication Management Functions\"><code>pg_create_logical_replication_slot()</code></a>.</p>", "text": "Enable the failover of logical slots (Hou Zhijie, Shveta Malik, Ajin Cherian) \u00a7 This is controlled by an optional fifth argument to pg_create_logical_replication_slot().", "title": "Enable the failover of logical slots", "commits": ["c393308b6"], "section": "Server / Logical Replication", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LOGICAL", "source_hash": "6c09d40ce378d69cf1f5bda41d75d34a0ca025cff0ed4c9ff925c761c0a5e4a0", "section_path": ["Server", "Logical Replication"], "commit_groups": [["c393308b6"]], "identity_text": "Enable the failover of logical slots (Hou Zhijie, Shveta Malik, Ajin Cherian) This is controlled by an optional fifth argument to pg_create_logical_replication_slot().", "commit_aliases": ["c393308b6"], "source_commits": ["c393308b6"], "source_entry_id": "17.0/changes/050", "db_id": "c4939635a2188cada37a365eaa1e2af1", "patch_ids": ["1d32c3e59369bcbe8de6d58ee2057c83"], "statement_hash": "22c84998971757d8e8e83c67a5d40bf26af401f87faf85fd76fde6184431a93b", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-6bc1e01f860f7749", "migration": false}, {"id": "17.0-e17dc23babebc7d6", "cves": [], "html": "<p>Add server variable <a href=\"/docs/17/runtime-config-replication.html#GUC-SYNC-REPLICATION-SLOTS\">sync_replication_slots</a> to enable failover logical slot synchronization (Shveta Malik, Hou Zhijie, Peter Smith) <a href=\"https://postgr.es/c/93db6cbda\">\u00a7</a> <a href=\"https://postgr.es/c/60c07820d\">\u00a7</a></p>", "text": "Add server variable sync_replication_slots to enable failover logical slot synchronization (Shveta Malik, Hou Zhijie, Peter Smith) \u00a7 \u00a7", "title": "Add server variable sync_replication_slots to enable failover logical slot synchronization", "commits": ["60c07820d", "93db6cbda"], "section": "Server / Logical Replication", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LOGICAL", "source_hash": "3b6b45c237569e305b5434b96d85bb7e0a91f8b2bc4067bf571e88ea587db648", "section_path": ["Server", "Logical Replication"], "commit_groups": [["60c07820d"], ["93db6cbda"]], "identity_text": "Add server variable guc-sync-replication-slots to enable failover logical slot synchronization (Shveta Malik, Hou Zhijie, Peter Smith)", "commit_aliases": ["60c07820d", "93db6cbda"], "source_commits": ["60c07820d", "93db6cbda"], "source_entry_id": "17.0/changes/051", "db_id": "8c343eb28e4f2f35de4c934ed2d348dd", "patch_ids": ["b4ecc525dca1d03b2e5b4a1d18beee57", "fba3bec073133d9593881abc45607059"], "statement_hash": "7b1e99545e49529033cf741fef92e78b2ae8dec03c1ed72c0043d42df9329e2b", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-e17dc23babebc7d6", "migration": false}, {"id": "17.0-0f6ec957651767ff", "cves": [], "html": "<p>Add logical replication failover control to <a href=\"/docs/17/sql-createsubscription.html\" title=\"CREATE SUBSCRIPTION\"><code>CREATE/ALTER SUBSCRIPTION</code></a> (Shveta Malik, Hou Zhijie, Ajin Cherian) <a href=\"https://postgr.es/c/776621a5e\">\u00a7</a> <a href=\"https://postgr.es/c/22f7e61a6\">\u00a7</a></p>", "text": "Add logical replication failover control to CREATE/ALTER SUBSCRIPTION (Shveta Malik, Hou Zhijie, Ajin Cherian) \u00a7 \u00a7", "title": "Add logical replication failover control to CREATE/ALTER SUBSCRIPTION", "commits": ["22f7e61a6", "776621a5e"], "section": "Server / Logical Replication", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LOGICAL", "source_hash": "fba0b70d11bac81e64da7d9adec10f23720705b03184510436eeccdc310280f9", "section_path": ["Server", "Logical Replication"], "commit_groups": [["22f7e61a6"], ["776621a5e"]], "identity_text": "Add logical replication failover control to CREATE/ALTER SUBSCRIPTION (Shveta Malik, Hou Zhijie, Ajin Cherian)", "commit_aliases": ["22f7e61a6", "776621a5e"], "source_commits": ["22f7e61a6", "776621a5e"], "source_entry_id": "17.0/changes/052", "db_id": "b57b9d35ac49f1dad946caf43d44dccb", "patch_ids": ["1c86d4f80cf36b4ce2a250316d3ebbbb", "ec1cbeb637f1dbbdbee28255309d0095"], "statement_hash": "63f4112091a51dcc31b95c347053bafb3bf1cf99ffe39167b06483b874e87637", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-0f6ec957651767ff", "migration": false}, {"id": "17.0-7261b889d9add817", "cves": [], "html": "<p>Allow the application of logical replication changes to use <a href=\"/docs/17/hash-index.html\" title=\"64.6.\u00a0Hash Indexes\">hash</a> indexes on the subscriber (Hayato Kuroda) <a href=\"https://postgr.es/c/edca34243\">\u00a7</a></p>\n<p>Previously only <a href=\"/docs/17/btree.html\" title=\"64.1.\u00a0B-Tree Indexes\">btree</a> indexes could be used for this purpose.</p>", "text": "Allow the application of logical replication changes to use hash indexes on the subscriber (Hayato Kuroda) \u00a7 Previously only btree indexes could be used for this purpose.", "title": "Allow the application of logical replication changes to use hash indexes on the subscriber", "commits": ["edca34243"], "section": "Server / Logical Replication", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LOGICAL", "source_hash": "52806172c8b6b609ed02f1b2331d1102a79c1f1a6a976e074e106a8f623b4840", "section_path": ["Server", "Logical Replication"], "commit_groups": [["edca34243"]], "identity_text": "Allow the application of logical replication changes to use hash indexes on the subscriber (Hayato Kuroda) Previously only btree indexes could be used for this purpose.", "commit_aliases": ["edca34243"], "source_commits": ["edca34243"], "source_entry_id": "17.0/changes/053", "db_id": "76c2b77af322eb64cca203b894ae4987", "patch_ids": ["351f3ecff1d2ec06824ce82da89bc8e7"], "statement_hash": "643d4371972dca0ee68c4fbe7f82ef7dfa333aa939596a5e3f11c623ad9724a0", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-7261b889d9add817", "migration": false}, {"id": "17.0-397dc066f780cfd2", "cves": [], "html": "<p>Improve <a href=\"/docs/17/logicaldecoding.html\" title=\"Chapter\u00a047.\u00a0Logical Decoding\">logical decoding</a> performance in cases where there are many subtransactions (Masahiko Sawada) <a href=\"https://postgr.es/c/5bec1d6bc\">\u00a7</a></p>", "text": "Improve logical decoding performance in cases where there are many subtransactions (Masahiko Sawada) \u00a7", "title": "Improve logical decoding performance in cases where there are many subtransactions", "commits": ["5bec1d6bc"], "section": "Server / Logical Replication", "category": "performance", "source_url": "/docs/release/17.0/#RELEASE-17-LOGICAL", "source_hash": "907b0bb80ba99cfe8b07a8ecdc8cac23e9cd50d50d62860fbc58de910fd10091", "section_path": ["Server", "Logical Replication"], "commit_groups": [["5bec1d6bc"]], "identity_text": "Improve logical decoding performance in cases where there are many subtransactions (Masahiko Sawada)", "commit_aliases": ["5bec1d6bc"], "source_commits": ["5bec1d6bc"], "source_entry_id": "17.0/changes/054", "db_id": "13e9e56d75399c0a3d2a68e52c334106", "patch_ids": ["3790ad2bce6b204989db4719e2fe2d72"], "statement_hash": "72c2381cddbfa5a317e6d3bbf449f9d9c82a35ed6b428c4b5f6d7a262eb800ec", "relations": [], "category_label": "Performance", "url": "/docs/compare/?release=17.0#17.0-397dc066f780cfd2", "migration": false}, {"id": "17.0-0379fc88a56a2698", "cves": [], "html": "<p>Restart apply workers if subscription owner's superuser privileges are revoked (Vignesh C) <a href=\"https://postgr.es/c/79243de13\">\u00a7</a></p>\n<p>This forces reauthentication.</p>", "text": "Restart apply workers if subscription owner's superuser privileges are revoked (Vignesh C) \u00a7 This forces reauthentication.", "title": "Restart apply workers if subscription owner's superuser privileges are revoked", "commits": ["79243de13"], "section": "Server / Logical Replication", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LOGICAL", "source_hash": "f8f586d461a36e84ccd0c5fb60653e1130c50a1b5022a7f721796654600851cb", "section_path": ["Server", "Logical Replication"], "commit_groups": [["79243de13"]], "identity_text": "Restart apply workers if subscription owner's superuser privileges are revoked (Vignesh C) This forces reauthentication.", "commit_aliases": ["79243de13"], "source_commits": ["79243de13"], "source_entry_id": "17.0/changes/055", "db_id": "4545b17ab8113547542da114c77d5573", "patch_ids": ["64d8f5d679a4beaf4606e9c3ef1d7e5a"], "statement_hash": "b2198c55fb50f158b72cadb4b806fc3ca139464035a44556ba7aa7f47684a3f3", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-0379fc88a56a2698", "migration": false}, {"id": "17.0-b100fe52b2dd78c7", "cves": [], "html": "<p>Add <code>flush</code> option to <a href=\"/docs/17/functions-admin.html#FUNCTIONS-REPLICATION-TABLE\" title=\"Table\u00a09.99.\u00a0Replication Management Functions\"><code>pg_logical_emit_message()</code></a> (Michael Paquier) <a href=\"https://postgr.es/c/173b56f1e\">\u00a7</a></p>\n<p>This makes the message durable.</p>", "text": "Add flush option to pg_logical_emit_message() (Michael Paquier) \u00a7 This makes the message durable.", "title": "Add flush option to pg_logical_emit_message()", "commits": ["173b56f1e"], "section": "Server / Logical Replication", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LOGICAL", "source_hash": "7d9eb5bcd667d310d84bd4d4bdb365d37eaba933d0549184f7f8c8cbf6756991", "section_path": ["Server", "Logical Replication"], "commit_groups": [["173b56f1e"]], "identity_text": "Add flush option to pg_logical_emit_message() (Michael Paquier) This makes the message durable.", "commit_aliases": ["173b56f1e"], "source_commits": ["173b56f1e"], "source_entry_id": "17.0/changes/056", "db_id": "d85be09c70a59028ea78df7318a28627", "patch_ids": ["d5627808d42f38ca807d7013e994b1ab"], "statement_hash": "dd1b3a50f262acdfeeacf766d8d2e1f81b58a5231666d1eb453b6183a1864e25", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-b100fe52b2dd78c7", "migration": false}, {"id": "17.0-030fbaca704c043c", "cves": [], "html": "<p>Allow specification of physical standbys that must be synchronized before they are visible to subscribers (Hou Zhijie, Shveta Malik) <a href=\"https://postgr.es/c/bf279ddd1\">\u00a7</a> <a href=\"https://postgr.es/c/0f934b073\">\u00a7</a></p>\n<p>The new server variable is <a href=\"/docs/17/runtime-config-replication.html#GUC-SYNCHRONIZED-STANDBY-SLOTS\">synchronized_standby_slots</a>.</p>", "text": "Allow specification of physical standbys that must be synchronized before they are visible to subscribers (Hou Zhijie, Shveta Malik) \u00a7 \u00a7 The new server variable is synchronized_standby_slots.", "title": "Allow specification of physical standbys that must be synchronized before they are visible to subscribers", "commits": ["0f934b073", "bf279ddd1"], "section": "Server / Logical Replication", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LOGICAL", "source_hash": "7bd3441fcd067f84b47d6bc29c7425094a0590e6a7ef421e0c3529aa20ee405d", "section_path": ["Server", "Logical Replication"], "commit_groups": [["0f934b073"], ["bf279ddd1"]], "identity_text": "Allow specification of physical standbys that must be synchronized before they are visible to subscribers (Hou Zhijie, Shveta Malik) The new server variable is guc-synchronized-standby-slots .", "commit_aliases": ["0f934b073", "bf279ddd1"], "source_commits": ["0f934b073", "bf279ddd1"], "source_entry_id": "17.0/changes/057", "db_id": "402fd0f262a268f27c9aeff2183e2b1a", "patch_ids": ["cab42c75bbb23030aff44fe28f8e1061", "e4760edb9a3eb2b2cf4a7e394e971890"], "statement_hash": "8c320dd8759eeefe5c2d2126ca9614de88a131911aff182ecd7ff84a1e5f8de5", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-030fbaca704c043c", "migration": false}, {"id": "17.0-c0ecfaade757c52a", "cves": [], "html": "<p>Add worker type column to <a href=\"/docs/17/monitoring-stats.html#MONITORING-PG-STAT-SUBSCRIPTION\" title=\"27.2.8.\u00a0pg_stat_subscription\"><code>pg_stat_subscription</code></a> (Peter Smith) <a href=\"https://postgr.es/c/13aeaf079\">\u00a7</a></p>", "text": "Add worker type column to pg_stat_subscription (Peter Smith) \u00a7", "title": "Add worker type column to pg_stat_subscription", "commits": ["13aeaf079"], "section": "Server / Logical Replication", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LOGICAL", "source_hash": "ef53508d9036941925e4ac87c43c0e354ec1f40b043bf70d3e34cca564e4fe88", "section_path": ["Server", "Logical Replication"], "commit_groups": [["13aeaf079"]], "identity_text": "Add worker type column to pg_stat_subscription (Peter Smith)", "commit_aliases": ["13aeaf079"], "source_commits": ["13aeaf079"], "source_entry_id": "17.0/changes/058", "db_id": "c96da6b6d0807ab405a7877449d5df44", "patch_ids": ["b137ed957df07f42c12c231224879bfc"], "statement_hash": "d3ed7f8916271e01e9a6d5ab15de3383836a50a244709a8381d8cd2901e5d50f", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-c0ecfaade757c52a", "migration": false}, {"id": "17.0-7ca4c560e6c4dc3a", "cves": [], "html": "<p>Add new <a href=\"/docs/17/sql-copy.html\" title=\"COPY\"><code>COPY</code></a> option <code>ON_ERROR ignore</code> to discard error rows (Damir Belyalov, Atsushi Torikoshi, Alex Shulgin, Jian He, Yugo Nagata) <a href=\"https://postgr.es/c/9e2d87011\">\u00a7</a> <a href=\"https://postgr.es/c/b725b7eec\">\u00a7</a> <a href=\"https://postgr.es/c/40bbc8cf0\">\u00a7</a> <a href=\"https://postgr.es/c/a6d0fa5ef\">\u00a7</a></p>\n<p>The default behavior is <code>ON_ERROR stop</code>.</p>", "text": "Add new COPY option ON_ERROR ignore to discard error rows (Damir Belyalov, Atsushi Torikoshi, Alex Shulgin, Jian He, Yugo Nagata) \u00a7 \u00a7 \u00a7 \u00a7 The default behavior is ON_ERROR stop.", "title": "Add new COPY option ON_ERROR ignore to discard error rows", "commits": ["40bbc8cf0", "9e2d87011", "a6d0fa5ef", "b725b7eec"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "4173f286dab7721379678db6b89f9e4dd7efdb2bd28ab37da9c190ba8e5de82d", "section_path": ["Utility Commands"], "commit_groups": [["40bbc8cf0"], ["9e2d87011"], ["a6d0fa5ef"], ["b725b7eec"]], "identity_text": "Add new COPY option ON_ERROR ignore to discard error rows (Damir Belyalov, Atsushi Torikoshi, Alex Shulgin, Jian He, Yugo Nagata) The default behavior is ON_ERROR stop.", "commit_aliases": ["40bbc8cf0", "9e2d87011", "a6d0fa5ef", "b725b7eec"], "source_commits": ["40bbc8cf0", "9e2d87011", "a6d0fa5ef", "b725b7eec"], "source_entry_id": "17.0/changes/059", "db_id": "365709962f047e6f729f62ea0f2866a1", "patch_ids": ["5c73418a2456682094c6ccabeca20104", "a6abd373ab86aa7d6b820b6866590914", "b9446bd4b0350ff0915cb348599fc516", "c33ab49aa06c6ed448604bd209dbf660"], "statement_hash": "cf2016041c04a6ad7e46adaca307bfdcb3b9661648c9a993b89be6af96e3a0be", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-7ca4c560e6c4dc3a", "migration": false}, {"id": "17.0-075548dd2c7fcb38", "cves": [], "html": "<p>Add new <code>COPY</code> option <code>LOG_VERBOSITY</code> which reports <code>COPY FROM</code> ignored error rows (Bharath Rupireddy) <a href=\"https://postgr.es/c/f5a227895\">\u00a7</a></p>", "text": "Add new COPY option LOG_VERBOSITY which reports COPY FROM ignored error rows (Bharath Rupireddy) \u00a7", "title": "Add new COPY option LOG_VERBOSITY which reports COPY FROM ignored error rows", "commits": ["f5a227895"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "1bd4a48d8505938fe39646bdc806f5ddebf0f4045cc37d48c9a7b53212d1266e", "section_path": ["Utility Commands"], "commit_groups": [["f5a227895"]], "identity_text": "Add new COPY option LOG_VERBOSITY which reports COPY FROM ignored error rows (Bharath Rupireddy)", "commit_aliases": ["f5a227895"], "source_commits": ["f5a227895"], "source_entry_id": "17.0/changes/060", "db_id": "8f4240a426fab219d05af381844421c5", "patch_ids": ["7a12c77d052db950b856e11512ade308"], "statement_hash": "74d16a0eee3425bd37b740054702560b393ffe40b0238c59371faca7a8b53447", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-075548dd2c7fcb38", "migration": false}, {"id": "17.0-567f8a16dcddb9b2", "cves": [], "html": "<p>Allow <code>COPY FROM</code> to report the number of skipped rows during processing (Atsushi Torikoshi) <a href=\"https://postgr.es/c/729439607\">\u00a7</a></p>\n<p>This appears in system view column <a href=\"/docs/17/progress-reporting.html#COPY-PROGRESS-REPORTING\" title=\"27.4.3.\u00a0COPY Progress Reporting\"><code>pg_stat_progress_copy</code>.<code>tuples_skipped</code></a>.</p>", "text": "Allow COPY FROM to report the number of skipped rows during processing (Atsushi Torikoshi) \u00a7 This appears in system view column pg_stat_progress_copy.tuples_skipped.", "title": "Allow COPY FROM to report the number of skipped rows during processing", "commits": ["729439607"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "7d4933ce512bec16cb37b9929e1c88b8f0545988d1749e3607e708eb39da256d", "section_path": ["Utility Commands"], "commit_groups": [["729439607"]], "identity_text": "Allow COPY FROM to report the number of skipped rows during processing (Atsushi Torikoshi) This appears in system view column pg_stat_progress_copy.tuples_skipped.", "commit_aliases": ["729439607"], "source_commits": ["729439607"], "source_entry_id": "17.0/changes/061", "db_id": "d5cb9bc41572f0e8d078f64daf384557", "patch_ids": ["0afc944187e2b98a0c4a4ef02ac871e6"], "statement_hash": "959f6a9f3d8f9f5b976eaf5c9a2aae915b1859e65354db8dd2a786312e33a3ee", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-567f8a16dcddb9b2", "migration": false}, {"id": "17.0-792433d9aa01be70", "cves": [], "html": "<p>In <code>COPY FROM</code>, allow easy specification that all columns should be forced null or not null (Zhang Mingli) <a href=\"https://postgr.es/c/f6d4c9cf1\">\u00a7</a></p>", "text": "In COPY FROM, allow easy specification that all columns should be forced null or not null (Zhang Mingli) \u00a7", "title": "In COPY FROM, allow easy specification that all columns should be forced null or not null", "commits": ["f6d4c9cf1"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "e1ea6d6d63d884aae7ed748ba25f75f44970323bbd153b7d9ba78f8ba6e80d88", "section_path": ["Utility Commands"], "commit_groups": [["f6d4c9cf1"]], "identity_text": "In COPY FROM, allow easy specification that all columns should be forced null or not null (Zhang Mingli)", "commit_aliases": ["f6d4c9cf1"], "source_commits": ["f6d4c9cf1"], "source_entry_id": "17.0/changes/062", "db_id": "263d1d0cc371d97f055522d42beb04a7", "patch_ids": ["0f2ac90c75aba410d511036497a989ce"], "statement_hash": "9849b1a30dd7f31662322117df5348b5e8e969812ede23c4edb861b3daeafeee", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-792433d9aa01be70", "migration": false}, {"id": "17.0-d04aaa6935ec0dbb", "cves": [], "html": "<p>Allow partitioned tables to have identity columns (Ashutosh Bapat) <a href=\"https://postgr.es/c/699586315\">\u00a7</a></p>", "text": "Allow partitioned tables to have identity columns (Ashutosh Bapat) \u00a7", "title": "Allow partitioned tables to have identity columns", "commits": ["699586315"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "d6773ffc45256b40173b8f32f1599e692da3f22be3112807add72e473449cee7", "section_path": ["Utility Commands"], "commit_groups": [["699586315"]], "identity_text": "Allow partitioned tables to have identity columns (Ashutosh Bapat)", "commit_aliases": ["699586315"], "source_commits": ["699586315"], "source_entry_id": "17.0/changes/063", "db_id": "d68483b69562373262a0bcbf0eb8f379", "patch_ids": ["e223295279c5c1549441d329e725f1f5"], "statement_hash": "0c352aff4194ec7d6aa8b23e700fce9724023fec4040a6c696163d485698550f", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-d04aaa6935ec0dbb", "migration": false}, {"id": "17.0-079d055c5ec37287", "cves": [], "html": "<p>Allow <a href=\"/docs/17/ddl-constraints.html#DDL-CONSTRAINTS-EXCLUSION\" title=\"5.5.6.\u00a0Exclusion Constraints\">exclusion constraints</a> on partitioned tables (Paul A. Jungwirth) <a href=\"https://postgr.es/c/8c852ba9a\">\u00a7</a></p>\n<p>As long as exclusion constraints compare partition key columns for equality, other columns can use exclusion constraint-specific comparisons.</p>", "text": "Allow exclusion constraints on partitioned tables (Paul A. Jungwirth) \u00a7 As long as exclusion constraints compare partition key columns for equality, other columns can use exclusion constraint-specific comparisons.", "title": "Allow exclusion constraints on partitioned tables", "commits": ["8c852ba9a"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "fb4777f26494f716ed6568697ee6d8cc5caf427022357d99cbc2e62281103506", "section_path": ["Utility Commands"], "commit_groups": [["8c852ba9a"]], "identity_text": "Allow exclusion constraints on partitioned tables (Paul A. Jungwirth) As long as exclusion constraints compare partition key columns for equality, other columns can use exclusion constraint-specific comparisons.", "commit_aliases": ["8c852ba9a"], "source_commits": ["8c852ba9a"], "source_entry_id": "17.0/changes/064", "db_id": "a6d414dedb1f3a32209a6d5c975f9fd3", "patch_ids": ["171e5b635a45df92bbdf17f0e9771da3"], "statement_hash": "92d39333322480eb6c7266bf2a0426abeab386bd0a7140a07b2bbd2962fddbed", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-079d055c5ec37287", "migration": false}, {"id": "17.0-d6b4c19b7bb99793", "cves": [], "html": "<p>Add clearer <a href=\"/docs/17/sql-altertable.html\" title=\"ALTER TABLE\"><code>ALTER TABLE</code></a> method to set a column to the default statistics target (Peter Eisentraut) <a href=\"https://postgr.es/c/4f622503d\">\u00a7</a></p>\n<p>The new syntax is <code>ALTER TABLE ... SET STATISTICS DEFAULT</code>; using <code>SET STATISTICS -1</code> is still supported.</p>", "text": "Add clearer ALTER TABLE method to set a column to the default statistics target (Peter Eisentraut) \u00a7 The new syntax is ALTER TABLE ... SET STATISTICS DEFAULT; using SET STATISTICS -1 is still supported.", "title": "Add clearer ALTER TABLE method to set a column to the default statistics target", "commits": ["4f622503d"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "26e5380d56453682cf806c80cd75bd54d638455642421958df6009f56e40281a", "section_path": ["Utility Commands"], "commit_groups": [["4f622503d"]], "identity_text": "Add clearer ALTER TABLE method to set a column to the default statistics target (Peter Eisentraut) The new syntax is ALTER TABLE ... SET STATISTICS DEFAULT; using SET STATISTICS -1 is still supported.", "commit_aliases": ["4f622503d"], "source_commits": ["4f622503d"], "source_entry_id": "17.0/changes/065", "db_id": "6092816ce66efe9e474514c27d1edf89", "patch_ids": ["4d496fe2fd867ecb3ba5df367b723dd0"], "statement_hash": "acfec4a190118ae3ba311a502fe0bacf4bfec8bc1bab7e70582acd98ecd0426d", "relations": [{"rule": 2, "type": "related", "target": "55cac36d03b238bca53d532c65e1d15f", "evidence": {"same_day": true, "patch_ids": ["4d496fe2fd867ecb3ba5df367b723dd0"]}}], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-d6b4c19b7bb99793", "migration": false}, {"id": "17.0-2476a29373e8d129", "cves": [], "html": "<p>Allow <code>ALTER TABLE</code> to change a column's generation expression (Amul Sul) <a href=\"https://postgr.es/c/5d06e99a3\">\u00a7</a></p>\n<p>The syntax is <code>ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION</code>.</p>", "text": "Allow ALTER TABLE to change a column's generation expression (Amul Sul) \u00a7 The syntax is ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION.", "title": "Allow ALTER TABLE to change a column's generation expression", "commits": ["5d06e99a3"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "d68eb3005be15dfca37b86149a1eab65687f34d8deb3912d886afe377b47865d", "section_path": ["Utility Commands"], "commit_groups": [["5d06e99a3"]], "identity_text": "Allow ALTER TABLE to change a column's generation expression (Amul Sul) The syntax is ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION.", "commit_aliases": ["5d06e99a3"], "source_commits": ["5d06e99a3"], "source_entry_id": "17.0/changes/066", "db_id": "7526fd7c1aab47310de7f8871d5df6aa", "patch_ids": ["c3b9ff98023ddcbc946dbb3937a67397"], "statement_hash": "d03bfa91d58f2c27c3d434cf4174ee7f149d63c3e3516c09f5bc77617f8b45a2", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-2476a29373e8d129", "migration": false}, {"id": "17.0-58f6c8f46fe43e23", "cves": [], "html": "<p>Allow specification of <a href=\"/docs/17/tableam.html\" title=\"Chapter\u00a061.\u00a0Table Access Method Interface Definition\">table access methods</a> on partitioned tables (Justin Pryzby, Soumyadeep Chakraborty, Michael Paquier) <a href=\"https://postgr.es/c/374c7a229\">\u00a7</a> <a href=\"https://postgr.es/c/e2395cdbe\">\u00a7</a></p>", "text": "Allow specification of table access methods on partitioned tables (Justin Pryzby, Soumyadeep Chakraborty, Michael Paquier) \u00a7 \u00a7", "title": "Allow specification of table access methods on partitioned tables", "commits": ["374c7a229", "e2395cdbe"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "58ed2b89b695cb6bf19b0e65b5b8685c2c18e39550cbd5917765d539c98e57f3", "section_path": ["Utility Commands"], "commit_groups": [["374c7a229"], ["e2395cdbe"]], "identity_text": "Allow specification of table access methods on partitioned tables (Justin Pryzby, Soumyadeep Chakraborty, Michael Paquier)", "commit_aliases": ["374c7a229", "e2395cdbe"], "source_commits": ["374c7a229", "e2395cdbe"], "source_entry_id": "17.0/changes/067", "db_id": "62582f5907336949f9efd19673964ecc", "patch_ids": ["d8c678c4367013caa41719514512deaa", "e5b02f4aca72c82315ce2a39bff0c870"], "statement_hash": "a705a4cebfc30dc70c9ce00a90e9adaf7fa9a90303224410fe646bf4e61547a8", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-58f6c8f46fe43e23", "migration": false}, {"id": "17.0-75769028fb5c9206", "cves": [], "html": "<p>Add <code>DEFAULT</code> setting for <code>ALTER TABLE .. SET ACCESS METHOD</code> (Michael Paquier) <a href=\"https://postgr.es/c/d61a6cad6\">\u00a7</a></p>", "text": "Add DEFAULT setting for ALTER TABLE .. SET ACCESS METHOD (Michael Paquier) \u00a7", "title": "Add DEFAULT setting for ALTER TABLE .. SET ACCESS METHOD", "commits": ["d61a6cad6"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "416f5f66d5ba4650150fc3007b0218d18c91ff7ae7cd6fe5dd613bbc9ad1d23f", "section_path": ["Utility Commands"], "commit_groups": [["d61a6cad6"]], "identity_text": "Add DEFAULT setting for ALTER TABLE .. SET ACCESS METHOD (Michael Paquier)", "commit_aliases": ["d61a6cad6"], "source_commits": ["d61a6cad6"], "source_entry_id": "17.0/changes/068", "db_id": "02aaff9e81f82f1da8e8990a0a588b4f", "patch_ids": ["8bb0d47105275c28fc445857675584fa"], "statement_hash": "cab1533c7828d51817a48001dc366370824716f564de2a8490608f32577dc178", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-75769028fb5c9206", "migration": false}, {"id": "17.0-1d8f07fa1d69b9dd", "cves": [], "html": "<p>Add support for <a href=\"/docs/17/sql-createeventtrigger.html\" title=\"CREATE EVENT TRIGGER\">event triggers</a> that fire at connection time (Konstantin Knizhnik, Mikhail Gribkov) <a href=\"https://postgr.es/c/e83d1b0c4\">\u00a7</a></p>", "text": "Add support for event triggers that fire at connection time (Konstantin Knizhnik, Mikhail Gribkov) \u00a7", "title": "Add support for event triggers that fire at connection time", "commits": ["e83d1b0c4"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "28030046e1a700e7b3da9438cdfa90ddef97bafb92193632fd6df01c3077c616", "section_path": ["Utility Commands"], "commit_groups": [["e83d1b0c4"]], "identity_text": "Add support for event triggers that fire at connection time (Konstantin Knizhnik, Mikhail Gribkov)", "commit_aliases": ["e83d1b0c4"], "source_commits": ["e83d1b0c4"], "source_entry_id": "17.0/changes/069", "db_id": "6a0b049ca5010efe61d38bf6dd3266f5", "patch_ids": ["81d2b85442f53f5aae778ed487591a0e"], "statement_hash": "f2526b5708edc82c47132a1620cc8b0e64a3699d8c1efeba55fe964960cce461", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-1d8f07fa1d69b9dd", "migration": false}, {"id": "17.0-dbbdc3f15247702e", "cves": [], "html": "<p>Add event trigger support for <a href=\"/docs/17/sql-reindex.html\" title=\"REINDEX\"><code>REINDEX</code></a> (Garrett Thornburg, Jian He) <a href=\"https://postgr.es/c/f21848de2\">\u00a7</a></p>", "text": "Add event trigger support for REINDEX (Garrett Thornburg, Jian He) \u00a7", "title": "Add event trigger support for REINDEX", "commits": ["f21848de2"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "17455ef14238956f534688dc513015d05d1a9a0e221d27b67d021b2a4eafcff7", "section_path": ["Utility Commands"], "commit_groups": [["f21848de2"]], "identity_text": "Add event trigger support for REINDEX (Garrett Thornburg, Jian He)", "commit_aliases": ["f21848de2"], "source_commits": ["f21848de2"], "source_entry_id": "17.0/changes/070", "db_id": "fcd308f571631c763de01309c3cb4c09", "patch_ids": ["8302e0e533a7421fbae210668443c136"], "statement_hash": "45418b1481cebd92285301651d9ee095012d2bfd7749baa103981dccad07ee0e", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-dbbdc3f15247702e", "migration": false}, {"id": "17.0-81cef7d23d273758", "cves": [], "html": "<p>Allow parenthesized syntax for <a href=\"/docs/17/sql-cluster.html\" title=\"CLUSTER\"><code>CLUSTER</code></a> options if a table name is not specified (Nathan Bossart) <a href=\"https://postgr.es/c/cdaedfc96\">\u00a7</a></p>", "text": "Allow parenthesized syntax for CLUSTER options if a table name is not specified (Nathan Bossart) \u00a7", "title": "Allow parenthesized syntax for CLUSTER options if a table name is not specified", "commits": ["cdaedfc96"], "section": "Utility Commands", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-UTILITY", "source_hash": "99d61ca022448a0a5a5c450ba9edd277dd8f7e8b0c8754c586effa312b63a778", "section_path": ["Utility Commands"], "commit_groups": [["cdaedfc96"]], "identity_text": "Allow parenthesized syntax for CLUSTER options if a table name is not specified (Nathan Bossart)", "commit_aliases": ["cdaedfc96"], "source_commits": ["cdaedfc96"], "source_entry_id": "17.0/changes/071", "db_id": "c98666cbc1ccf226e8383a8e54298655", "patch_ids": ["d93decf7641cabc5deb7a2fc6e85a2b7"], "statement_hash": "00eaff8d7fa0509a53d7cd5a746bd90ea2f5b6e4f4e459e8bdf12b8b7f408c6d", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-81cef7d23d273758", "migration": false}, {"id": "17.0-3d68235feaacc074", "cves": [], "html": "<p>Allow <code>EXPLAIN</code> to report optimizer memory usage (Ashutosh Bapat) <a href=\"https://postgr.es/c/5de890e36\">\u00a7</a></p>\n<p>The option is called <code>MEMORY</code>.</p>", "text": "Allow EXPLAIN to report optimizer memory usage (Ashutosh Bapat) \u00a7 The option is called MEMORY.", "title": "Allow EXPLAIN to report optimizer memory usage", "commits": ["5de890e36"], "section": "Utility Commands / EXPLAIN", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-EXPLAIN", "source_hash": "df62ec5e427baba9f1a68c67a0fc4b0a1771853730714e2f0fec766a680eeb5e", "section_path": ["Utility Commands", "EXPLAIN"], "commit_groups": [["5de890e36"]], "identity_text": "Allow EXPLAIN to report optimizer memory usage (Ashutosh Bapat) The option is called MEMORY.", "commit_aliases": ["5de890e36"], "source_commits": ["5de890e36"], "source_entry_id": "17.0/changes/072", "db_id": "71bed92339c3f3de0a86b6d3a9e0402e", "patch_ids": ["15c76db82c589c26fa4aff3ded39fd2a"], "statement_hash": "c00457662f0e50af98fecdda7c5860246233624cfa685f472f01f8847be3523d", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-3d68235feaacc074", "migration": false}, {"id": "17.0-737284dd422e1026", "cves": [], "html": "<p>Add <code>EXPLAIN</code> option <code>SERIALIZE</code> to report the cost of converting data for network transmission (Stepan Rutz, Matthias van de Meent) <a href=\"https://postgr.es/c/06286709e\">\u00a7</a></p>", "text": "Add EXPLAIN option SERIALIZE to report the cost of converting data for network transmission (Stepan Rutz, Matthias van de Meent) \u00a7", "title": "Add EXPLAIN option SERIALIZE to report the cost of converting data for network transmission", "commits": ["06286709e"], "section": "Utility Commands / EXPLAIN", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-EXPLAIN", "source_hash": "e8b472e48caac5191de15ffbf6600fd4fbf694fa6082f21315b77399225d2af2", "section_path": ["Utility Commands", "EXPLAIN"], "commit_groups": [["06286709e"]], "identity_text": "Add EXPLAIN option SERIALIZE to report the cost of converting data for network transmission (Stepan Rutz, Matthias van de Meent)", "commit_aliases": ["06286709e"], "source_commits": ["06286709e"], "source_entry_id": "17.0/changes/073", "db_id": "97daae7ca392b85d0b1d17e931861cd8", "patch_ids": ["bdfaec7d62abe43f514139e272c051cc"], "statement_hash": "1d9bd86e2a9f38de5d25e356e2382a057efe88eff00bf1142389566ea7ae5a51", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-737284dd422e1026", "migration": false}, {"id": "17.0-0ccde574608199dd", "cves": [], "html": "<p>Add local I/O block read/write timing statistics to <code>EXPLAIN</code>'s <code>BUFFERS</code> output (Nazir Bilal Yavuz) <a href=\"https://postgr.es/c/295c36c0c\">\u00a7</a></p>", "text": "Add local I/O block read/write timing statistics to EXPLAIN's BUFFERS output (Nazir Bilal Yavuz) \u00a7", "title": "Add local I/O block read/write timing statistics to EXPLAIN's BUFFERS output", "commits": ["295c36c0c"], "section": "Utility Commands / EXPLAIN", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-EXPLAIN", "source_hash": "de34753602be6a6963efeae2cc431f7e76b6c3da2246b4e1baf66443089fe100", "section_path": ["Utility Commands", "EXPLAIN"], "commit_groups": [["295c36c0c"]], "identity_text": "Add local I/O block read/write timing statistics to EXPLAIN's BUFFERS output (Nazir Bilal Yavuz)", "commit_aliases": ["295c36c0c"], "source_commits": ["295c36c0c"], "source_entry_id": "17.0/changes/074", "db_id": "3a8f2092e95f906fe2ba774157ee86a4", "patch_ids": ["5bbfcb7876ccc999e0bc578d10ccf3d1"], "statement_hash": "14a0f420e6fdce8e907b562e8b737826172d9e6da9085f5efe07db0de1a13e0a", "relations": [{"rule": 2, "type": "related", "target": "a487787ae801d826d7c42eb4f15dd2e9", "evidence": {"same_day": true, "patch_ids": ["5bbfcb7876ccc999e0bc578d10ccf3d1"], "ambiguous_patch_ids": ["5bbfcb7876ccc999e0bc578d10ccf3d1"]}}], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-0ccde574608199dd", "migration": false}, {"id": "17.0-226fc6364bc48a21", "cves": [], "html": "<p>Improve <code>EXPLAIN</code>'s display of SubPlan nodes and output parameters (Tom Lane, Dean Rasheed) <a href=\"https://postgr.es/c/fd0398fcb\">\u00a7</a></p>", "text": "Improve EXPLAIN's display of SubPlan nodes and output parameters (Tom Lane, Dean Rasheed) \u00a7", "title": "Improve EXPLAIN's display of SubPlan nodes and output parameters", "commits": ["fd0398fcb"], "section": "Utility Commands / EXPLAIN", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-EXPLAIN", "source_hash": "8de10e075d3a3a3f910aa6e30549cddd065a9648a70fd829574a4da7ec5b3a4e", "section_path": ["Utility Commands", "EXPLAIN"], "commit_groups": [["fd0398fcb"]], "identity_text": "Improve EXPLAIN's display of SubPlan nodes and output parameters (Tom Lane, Dean Rasheed)", "commit_aliases": ["fd0398fcb"], "source_commits": ["fd0398fcb"], "source_entry_id": "17.0/changes/075", "db_id": "c47f831b9c89bc80c9d9bed926c01e11", "patch_ids": ["bd71d58ddd079130d8bcb6140dca138a"], "statement_hash": "ef2b0f1b56499d7ea432798a077b5f335c1c1a385cde35670b8dcda2eef45d21", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-226fc6364bc48a21", "migration": false}, {"id": "17.0-059161f2b1ae13a8", "cves": [], "html": "<p>Add <acronym>JIT</acronym> <code>deform_counter</code> details to <code>EXPLAIN</code> (Dmitry Dolgov) <a href=\"https://postgr.es/c/5a3423ad8\">\u00a7</a></p>", "text": "Add JIT deform_counter details to EXPLAIN (Dmitry Dolgov) \u00a7", "title": "Add JIT deform_counter details to EXPLAIN", "commits": ["5a3423ad8"], "section": "Utility Commands / EXPLAIN", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-EXPLAIN", "source_hash": "eaf00283591cbcad72f2ed135a5c0cf1140c22b3584f62f60be1d4f8f585482a", "section_path": ["Utility Commands", "EXPLAIN"], "commit_groups": [["5a3423ad8"]], "identity_text": "Add JIT deform_counter details to EXPLAIN (Dmitry Dolgov)", "commit_aliases": ["5a3423ad8"], "source_commits": ["5a3423ad8"], "source_entry_id": "17.0/changes/076", "db_id": "14f807d67bbb33e16136e47a0d977573", "patch_ids": ["69b5f4ac2075731de6ade1ebfae6e6c3"], "statement_hash": "3bc4030554843738c8a6339ba9875ea48730c6393f452b7c2474543a48de9ec5", "relations": [{"rule": 2, "type": "related", "target": "cfc33f9d4d45dd958c4e7f050c7845a6", "evidence": {"same_day": true, "patch_ids": ["69b5f4ac2075731de6ade1ebfae6e6c3"], "ambiguous_patch_ids": ["69b5f4ac2075731de6ade1ebfae6e6c3"]}}], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-059161f2b1ae13a8", "migration": false}, {"id": "17.0-e0e80ed21dd130b8", "cves": [], "html": "<p>Allow the <code>interval</code> data type to support <code>+/-infinity</code> values (Joseph Koshakow, Jian He, Ashutosh Bapat) <a href=\"https://postgr.es/c/519fc1bd9\">\u00a7</a></p>", "text": "Allow the interval data type to support +/-infinity values (Joseph Koshakow, Jian He, Ashutosh Bapat) \u00a7", "title": "Allow the interval data type to support +/-infinity values", "commits": ["519fc1bd9"], "section": "Data Types", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-DATATYPES", "source_hash": "57d8671681af0916c481def50a42c7c50a641c1d43a0cdbd5b989e6c0690210a", "section_path": ["Data Types"], "commit_groups": [["519fc1bd9"]], "identity_text": "Allow the interval data type to support +/-infinity values (Joseph Koshakow, Jian He, Ashutosh Bapat)", "commit_aliases": ["519fc1bd9"], "source_commits": ["519fc1bd9"], "source_entry_id": "17.0/changes/077", "db_id": "21e19c5c09084391af043fdfb894e330", "patch_ids": ["b91938e8420c533dc224e7b125b6abb3"], "statement_hash": "d15ddf43fef7d9894b24b27706b8cb8b690ac81aed3b281e59237148f0f47f68", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-e0e80ed21dd130b8", "migration": false}, {"id": "17.0-bebd56a82d403f88", "cves": [], "html": "<p>Allow the use of an <a href=\"/docs/17/datatype-enum.html\" title=\"8.7.\u00a0Enumerated Types\"><code>ENUM</code></a> added via <a href=\"/docs/17/sql-altertype.html\" title=\"ALTER TYPE\"><code>ALTER TYPE</code></a> if the type was created in the same transaction (Tom Lane) <a href=\"https://postgr.es/c/af1d39584\">\u00a7</a></p>\n<p>This was previously disallowed.</p>", "text": "Allow the use of an ENUM added via ALTER TYPE if the type was created in the same transaction (Tom Lane) \u00a7 This was previously disallowed.", "title": "Allow the use of an ENUM added via ALTER TYPE if the type was created in the same transaction", "commits": ["af1d39584"], "section": "Data Types", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-DATATYPES", "source_hash": "1b54e6f54d9debea581b57bd116ccdd1ca2f74bab99289355269d7fc57624785", "section_path": ["Data Types"], "commit_groups": [["af1d39584"]], "identity_text": "Allow the use of an ENUM added via ALTER TYPE if the type was created in the same transaction (Tom Lane) This was previously disallowed.", "commit_aliases": ["af1d39584"], "source_commits": ["af1d39584"], "source_entry_id": "17.0/changes/078", "db_id": "bb4b92fac7d7bf27bbf2a3c676960bb1", "patch_ids": ["4a8aa96d2b3f72c17cca83bb033799f9"], "statement_hash": "df9e6a22a08482e477e5d5f873e5f54b9cd9b8aa522560fdc6cac13d9137c604", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-bebd56a82d403f88", "migration": false}, {"id": "17.0-f678dfc6392caa4d", "cves": [], "html": "<p>Allow <code>MERGE</code> to modify updatable views (Dean Rasheed) <a href=\"https://postgr.es/c/5f2e179bd\">\u00a7</a></p>", "text": "Allow MERGE to modify updatable views (Dean Rasheed) \u00a7", "title": "Allow MERGE to modify updatable views", "commits": ["5f2e179bd"], "section": "MERGE", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MERGE", "source_hash": "2f73e95958319080e5040b3e1271ce2c829be7874fe2ce0c80aff15b4009699d", "section_path": ["MERGE"], "commit_groups": [["5f2e179bd"]], "identity_text": "Allow MERGE to modify updatable views (Dean Rasheed)", "commit_aliases": ["5f2e179bd"], "source_commits": ["5f2e179bd"], "source_entry_id": "17.0/changes/079", "db_id": "d6ae6c853adaf39f35ba6ae35112094c", "patch_ids": ["ae64a98f80ec7bf32d31aabe70bb3a8c"], "statement_hash": "76e8a3a1ee7a4639111f47ff871c659e6aa5893a7a84fc3a17173c1eacdaea38", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-f678dfc6392caa4d", "migration": false}, {"id": "17.0-562401d3e7ee1c60", "cves": [], "html": "<p>Add <code>WHEN NOT MATCHED BY SOURCE</code> to <code>MERGE</code> (Dean Rasheed) <a href=\"https://postgr.es/c/0294df2f1\">\u00a7</a></p>\n<p><code>WHEN NOT MATCHED</code> on target rows was already supported.</p>", "text": "Add WHEN NOT MATCHED BY SOURCE to MERGE (Dean Rasheed) \u00a7 WHEN NOT MATCHED on target rows was already supported.", "title": "Add WHEN NOT MATCHED BY SOURCE to MERGE", "commits": ["0294df2f1"], "section": "MERGE", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MERGE", "source_hash": "8ef1e26d38e863b544f0e125e1251ceaa64e9e5c824c4915f85724da77dcead4", "section_path": ["MERGE"], "commit_groups": [["0294df2f1"]], "identity_text": "Add WHEN NOT MATCHED BY SOURCE to MERGE (Dean Rasheed) WHEN NOT MATCHED on target rows was already supported.", "commit_aliases": ["0294df2f1"], "source_commits": ["0294df2f1"], "source_entry_id": "17.0/changes/080", "db_id": "68ca5745ae12c64f23b5edcc507fbd7d", "patch_ids": ["de2d02cea48c4be3dd7df067cd971800"], "statement_hash": "cada5f1d9f0edc113c09a36c592fba8e5ef5d012b10b6271f1c6af7f11f327ed", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-562401d3e7ee1c60", "migration": false}, {"id": "17.0-970b310040a2c152", "cves": [], "html": "<p>Allow <code>MERGE</code> to use the <code>RETURNING</code> clause (Dean Rasheed) <a href=\"https://postgr.es/c/c649fa24a\">\u00a7</a></p>\n<p>The new <code>RETURNING</code> function <code>merge_action()</code> reports on the <acronym>DML</acronym> that generated the row.</p>", "text": "Allow MERGE to use the RETURNING clause (Dean Rasheed) \u00a7 The new RETURNING function merge_action() reports on the DML that generated the row.", "title": "Allow MERGE to use the RETURNING clause", "commits": ["c649fa24a"], "section": "MERGE", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MERGE", "source_hash": "0ed35771443ac01bb89c6249564ad4e3cdfe7a5d39b142e751055c63c83a78a4", "section_path": ["MERGE"], "commit_groups": [["c649fa24a"]], "identity_text": "Allow MERGE to use the RETURNING clause (Dean Rasheed) The new RETURNING function merge_action() reports on the DML that generated the row.", "commit_aliases": ["c649fa24a"], "source_commits": ["c649fa24a"], "source_entry_id": "17.0/changes/081", "db_id": "126f05e11609c4529c0e084a8fa399eb", "patch_ids": ["9b6645a437b79d8fa2c57824a45c59e3"], "statement_hash": "613d6ca6525351d206e387de3bbbbd36934a63b88a05a516969d9c7b3f07e9f2", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-970b310040a2c152", "migration": false}, {"id": "17.0-bb48863bb791e0b4", "cves": [], "html": "<p>Add function <a href=\"/docs/17/functions-json.html#FUNCTIONS-SQLJSON-TABLE\" title=\"9.16.4.\u00a0JSON_TABLE\"><code>JSON_TABLE()</code></a> to convert <code>JSON</code> data to a table representation (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Jian He) <a href=\"https://postgr.es/c/de3600452\">\u00a7</a> <a href=\"https://postgr.es/c/bb766cde6\">\u00a7</a></p>\n<p>This function can be used in the <code>FROM</code> clause of <code>SELECT</code> queries as a tuple source.</p>", "text": "Add function JSON_TABLE() to convert JSON data to a table representation (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Jian He) \u00a7 \u00a7 This function can be used in the FROM clause of SELECT queries as a tuple source.", "title": "Add function JSON_TABLE() to convert JSON data to a table representation", "commits": ["bb766cde6", "de3600452"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "5298e1149453b597f22af3d1a2139f1682be6ebb692bd53bb15f0ea26b9191b9", "section_path": ["Functions"], "commit_groups": [["bb766cde6"], ["de3600452"]], "identity_text": "Add function JSON_TABLE() to convert JSON data to a table representation (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Jian He) This function can be used in the FROM clause of SELECT queries as a tuple source.", "commit_aliases": ["bb766cde6", "de3600452"], "source_commits": ["bb766cde6", "de3600452"], "source_entry_id": "17.0/changes/082", "db_id": "f81a9564db2ca7fd0b33004b18e5f87b", "patch_ids": ["827c683d8288891738cf31a5945db549", "a88ddc4b39ea92b620999c2ad59eb410"], "statement_hash": "c9ae5e14a1f857cc5ffad59dc3b48e6c0fa04a887bae8a96f1c48d9a6724b755", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-bb48863bb791e0b4", "migration": false}, {"id": "17.0-981949e34ff886df", "cves": [], "html": "<p>Add <acronym>SQL/JSON</acronym> constructor functions <a href=\"/docs/17/functions-json.html#FUNCTIONS-JSON-CREATION-TABLE\" title=\"Table\u00a09.47.\u00a0JSON Creation Functions\"><code>JSON()</code></a>, <code>JSON_SCALAR()</code>, and <code>JSON_SERIALIZE()</code> (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote) <a href=\"https://postgr.es/c/03734a7fe\">\u00a7</a></p>", "text": "Add SQL/JSON constructor functions JSON(), JSON_SCALAR(), and JSON_SERIALIZE() (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote) \u00a7", "title": "Add SQL/JSON constructor functions JSON(), JSON_SCALAR(), and JSON_SERIALIZE()", "commits": ["03734a7fe"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "f26755de813f4c7388a75ef86c3be47ee7d376876625d89373573ded1c7ff9b4", "section_path": ["Functions"], "commit_groups": [["03734a7fe"]], "identity_text": "Add SQL/JSON constructor functions JSON(), JSON_SCALAR(), and JSON_SERIALIZE() (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote)", "commit_aliases": ["03734a7fe"], "source_commits": ["03734a7fe"], "source_entry_id": "17.0/changes/083", "db_id": "cd6bbeaf341c7a0bc5aa8e262b47fceb", "patch_ids": ["9e77c2d2411f443655e00ae4c5699084"], "statement_hash": "aef51a5c4c10b92624cda2ada0393face18bdf494faeeb3acff0bd965617147f", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-981949e34ff886df", "migration": false}, {"id": "17.0-640329d45139f1b2", "cves": [], "html": "<p>Add <acronym>SQL/JSON</acronym> query functions <a href=\"/docs/17/functions-json.html#FUNCTIONS-SQLJSON-QUERYING\" title=\"Table\u00a09.52.\u00a0SQL/JSON Query Functions\"><code>JSON_EXISTS()</code></a>, <code>JSON_QUERY()</code>, and <code>JSON_VALUE()</code> (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Peter Eisentraut, Jian He) <a href=\"https://postgr.es/c/aaaf9449e\">\u00a7</a> <a href=\"https://postgr.es/c/1edb3b491\">\u00a7</a> <a href=\"https://postgr.es/c/6185c9737\">\u00a7</a> <a href=\"https://postgr.es/c/c0fc07518\">\u00a7</a> <a href=\"https://postgr.es/c/ef744ebb7\">\u00a7</a></p>", "text": "Add SQL/JSON query functions JSON_EXISTS(), JSON_QUERY(), and JSON_VALUE() (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Peter Eisentraut, Jian He) \u00a7 \u00a7 \u00a7 \u00a7 \u00a7", "title": "Add SQL/JSON query functions JSON_EXISTS(), JSON_QUERY(), and JSON_VALUE()", "commits": ["1edb3b491", "6185c9737", "aaaf9449e", "c0fc07518", "ef744ebb7"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "194e21e26f79c8b2e08789e69a959c7a5a069fff7917ca57b19069d1ae273b3b", "section_path": ["Functions"], "commit_groups": [["1edb3b491"], ["6185c9737"], ["aaaf9449e"], ["c0fc07518"], ["ef744ebb7"]], "identity_text": "Add SQL/JSON query functions JSON_EXISTS(), JSON_QUERY(), and JSON_VALUE() (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Peter Eisentraut, Jian He)", "commit_aliases": ["1edb3b491", "6185c9737", "aaaf9449e", "c0fc07518", "ef744ebb7"], "source_commits": ["1edb3b491", "6185c9737", "aaaf9449e", "c0fc07518", "ef744ebb7"], "source_entry_id": "17.0/changes/084", "db_id": "703cebe523925aa6ca4d8351ad6135ce", "patch_ids": ["742f62635fd9242ed92e4993e85e3573", "8beac13a47ca2ea95e530d5caddcda1f", "ced2d75f90b885737e9967460711c76a", "e26ce5b9ac68c76ff6a5e663948f4a05", "e4419c99647e51878f7770e80deb37be"], "statement_hash": "6c40c1de4c211c42bec095edfbc37479f4c11aac565dff6a9a69df03d3720734", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-640329d45139f1b2", "migration": false}, {"id": "17.0-b267796f028f815a", "cves": [], "html": "<p>Add <a href=\"/docs/17/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS\" title=\"9.16.2.3.\u00a0SQL/JSON Path Operators and Methods\">jsonpath</a> methods to convert <code>JSON</code> values to other <code>JSON</code> data types (Jeevan Chalke) <a href=\"https://postgr.es/c/66ea94e8e\">\u00a7</a></p>\n<p>The jsonpath methods are <code>.bigint()</code>, <code>.boolean()</code>, <code>.date()</code>, <code>.decimal([precision [, scale]])</code>, <code>.integer()</code>, <code>.number()</code>, <code>.string()</code>, <code>.time()</code>, <code>.time_tz()</code>, <code>.timestamp()</code>, and <code>.timestamp_tz()</code>.</p>", "text": "Add jsonpath methods to convert JSON values to other JSON data types (Jeevan Chalke) \u00a7 The jsonpath methods are .bigint(), .boolean(), .date(), .decimal([precision [, scale]]), .integer(), .number(), .string(), .time(), .time_tz(), .timestamp(), and .timestamp_tz().", "title": "Add jsonpath methods to convert JSON values to other JSON data types", "commits": ["66ea94e8e"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "6299725100304538ac11191f4687474c5aa2badab23efb9be0d0541d1518d170", "section_path": ["Functions"], "commit_groups": [["66ea94e8e"]], "identity_text": "Add jsonpath methods to convert JSON values to other JSON data types (Jeevan Chalke) The jsonpath methods are .bigint(), .boolean(), .date(), .decimal([precision [, scale]]), .integer(), .number(), .string(), .time(), .time_tz(), .timestamp(), and .timestamp_tz().", "commit_aliases": ["66ea94e8e"], "source_commits": ["66ea94e8e"], "source_entry_id": "17.0/changes/085", "db_id": "cf230e53eba840d6dc4a5db3dc7855b6", "patch_ids": ["508b378763d6201a25a6d3f302d6aef0"], "statement_hash": "170c8a60fe7819d38cf5ec8af4189a18358a1ee9f890bedf1c3ebcaeb13203da", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-b267796f028f815a", "migration": false}, {"id": "17.0-baab14db7968cd67", "cves": [], "html": "<p>Add <a href=\"/docs/17/functions-formatting.html#FUNCTIONS-FORMATTING-TABLE\" title=\"Table\u00a09.26.\u00a0Formatting Functions\"><code>to_timestamp()</code></a> time zone format specifiers (Tom Lane) <a href=\"https://postgr.es/c/8ba6fdf90\">\u00a7</a></p>\n<p><code>TZ</code> accepts time zone abbreviations or numeric offsets, while <code>OF</code> accepts only numeric offsets.</p>", "text": "Add to_timestamp() time zone format specifiers (Tom Lane) \u00a7 TZ accepts time zone abbreviations or numeric offsets, while OF accepts only numeric offsets.", "title": "Add to_timestamp() time zone format specifiers", "commits": ["8ba6fdf90"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "e743a5205bfa8c7f118647b56e6089f98a0a9e76edc400726ce600298e2cc55e", "section_path": ["Functions"], "commit_groups": [["8ba6fdf90"]], "identity_text": "Add to_timestamp() time zone format specifiers (Tom Lane) TZ accepts time zone abbreviations or numeric offsets, while OF accepts only numeric offsets.", "commit_aliases": ["8ba6fdf90"], "source_commits": ["8ba6fdf90"], "source_entry_id": "17.0/changes/086", "db_id": "6560f09c8fbe53b0bd652ce7c2b89173", "patch_ids": ["91055d3ffb63717414d185dd38bde979"], "statement_hash": "1b688041d44b8fad2d2ae8b2d513b6dbb609cc76f6c5238a13b4e3320799b229", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-baab14db7968cd67", "migration": false}, {"id": "17.0-dcce1db0ff3e8368", "cves": [], "html": "<p>Allow the session <a href=\"/docs/17/runtime-config-client.html#GUC-TIMEZONE\">time zone</a> to be specified by <code>AT LOCAL</code> (Vik Fearing) <a href=\"https://postgr.es/c/97957fdba\">\u00a7</a></p>\n<p>This is useful when converting adding and removing time zones from time stamps values, rather than specifying the literal session time zone.</p>", "text": "Allow the session time zone to be specified by AT LOCAL (Vik Fearing) \u00a7 This is useful when converting adding and removing time zones from time stamps values, rather than specifying the literal session time zone.", "title": "Allow the session time zone to be specified by AT LOCAL", "commits": ["97957fdba"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "381a3df7224cf58bbb21d1adca418e4ef00dff29d87b5bdbb03ad0919c9c029e", "section_path": ["Functions"], "commit_groups": [["97957fdba"]], "identity_text": "Allow the session time zone to be specified by AT LOCAL (Vik Fearing) This is useful when converting adding and removing time zones from time stamps values, rather than specifying the literal session time zone.", "commit_aliases": ["97957fdba"], "source_commits": ["97957fdba"], "source_entry_id": "17.0/changes/087", "db_id": "dd05696b9334a5a4f66ae3607a1502db", "patch_ids": ["56e48bbda9ba4c5f8386bfd60b2f6b1e"], "statement_hash": "b3b1850bd0c882795cbf14fc12e51334556d3072863022b12a9fff41690e6465", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-dcce1db0ff3e8368", "migration": false}, {"id": "17.0-7f16f050099911d7", "cves": [], "html": "<p>Add functions <a href=\"/docs/17/functions-uuid.html\" title=\"9.14.\u00a0UUID Functions\"><code>uuid_extract_timestamp()</code></a> and <code>uuid_extract_version()</code> to return <acronym>UUID</acronym> information (Andrey Borodin) <a href=\"https://postgr.es/c/794f10f6b\">\u00a7</a></p>", "text": "Add functions uuid_extract_timestamp() and uuid_extract_version() to return UUID information (Andrey Borodin) \u00a7", "title": "Add functions uuid_extract_timestamp() and uuid_extract_version() to return UUID information", "commits": ["794f10f6b"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "18a9b883b77bc3d08cfdee373283b004d00fb66024d59b250ae45b665720c390", "section_path": ["Functions"], "commit_groups": [["794f10f6b"]], "identity_text": "Add functions uuid_extract_timestamp() and uuid_extract_version() to return UUID information (Andrey Borodin)", "commit_aliases": ["794f10f6b"], "source_commits": ["794f10f6b"], "source_entry_id": "17.0/changes/088", "db_id": "1ca69f05ab160e002d694711d3fcfe01", "patch_ids": ["800ea20d57723701a28e3a149aab3fbc"], "statement_hash": "fc3077e1c87f31ed7c24a5e77c2e9587acc9adce7f767fa6cabf6d0a37b843dd", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-7f16f050099911d7", "migration": false}, {"id": "17.0-3fe99936d2462401", "cves": [], "html": "<p>Add functions to generate random numbers in a specified range (Dean Rasheed) <a href=\"https://postgr.es/c/e6341323a\">\u00a7</a></p>\n<p>The functions are <a href=\"/docs/17/functions-math.html#FUNCTIONS-MATH-RANDOM-TABLE\" title=\"Table\u00a09.6.\u00a0Random Functions\"><code>random(min, max)</code></a> and they take values of type <code>integer</code>, <code>bigint</code>, and <code>numeric</code>.</p>", "text": "Add functions to generate random numbers in a specified range (Dean Rasheed) \u00a7 The functions are random(min, max) and they take values of type integer, bigint, and numeric.", "title": "Add functions to generate random numbers in a specified range", "commits": ["e6341323a"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "8a7e21c27820b56f351bdf30c437288bcf7182efc4557b3a2c44d744c09ec7c8", "section_path": ["Functions"], "commit_groups": [["e6341323a"]], "identity_text": "Add functions to generate random numbers in a specified range (Dean Rasheed) The functions are random(min, max) and they take values of type integer, bigint, and numeric.", "commit_aliases": ["e6341323a"], "source_commits": ["e6341323a"], "source_entry_id": "17.0/changes/089", "db_id": "15f76b84a9cf872bac04242c665d6baf", "patch_ids": ["487fe43ea5826fdd1bd827f2dbfa3d8c"], "statement_hash": "2d790131c07f98882ff147f13c1ed85b4e631a47de66a6bb25cd12e9e13239d9", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-3fe99936d2462401", "migration": false}, {"id": "17.0-d777415196126c04", "cves": [], "html": "<p>Add functions to convert integers to binary and octal strings (Eric Radman, Nathan Bossart) <a href=\"https://postgr.es/c/260a1f18d\">\u00a7</a></p>\n<p>The functions are <a href=\"/docs/17/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"Table\u00a09.10.\u00a0Other String Functions and Operators\"><code>to_bin()</code></a> and <code>to_oct()</code>.</p>", "text": "Add functions to convert integers to binary and octal strings (Eric Radman, Nathan Bossart) \u00a7 The functions are to_bin() and to_oct().", "title": "Add functions to convert integers to binary and octal strings", "commits": ["260a1f18d"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "9b9d0f78bc2165c7d009f505c7b680d3abccc24486339914c69037cc042b40d2", "section_path": ["Functions"], "commit_groups": [["260a1f18d"]], "identity_text": "Add functions to convert integers to binary and octal strings (Eric Radman, Nathan Bossart) The functions are to_bin() and to_oct().", "commit_aliases": ["260a1f18d"], "source_commits": ["260a1f18d"], "source_entry_id": "17.0/changes/090", "db_id": "e7ea8e9b047e9df45b8e052b1fe861b8", "patch_ids": ["b85ba41fc9ae02aae058e57694a4e20e"], "statement_hash": "cb8199f4455dc9385eea98bbbd277b341b818b5fc4509f10e332ebd9c7b0f8f5", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-d777415196126c04", "migration": false}, {"id": "17.0-494f1d91a0300988", "cves": [], "html": "<p>Add Unicode informational functions (Jeff Davis) <a href=\"https://postgr.es/c/a02b37fc0\">\u00a7</a></p>\n<p>Function <a href=\"/docs/17/functions-info.html#FUNCTIONS-INFO-VERSION\" title=\"9.27.11.\u00a0Version Information Functions\"><code>unicode_version()</code></a> returns the Unicode version, <code>icu_unicode_version()</code> returns the <acronym>ICU</acronym> version, and <code>unicode_assigned()</code> returns if the characters are assigned Unicode codepoints.</p>", "text": "Add Unicode informational functions (Jeff Davis) \u00a7 Function unicode_version() returns the Unicode version, icu_unicode_version() returns the ICU version, and unicode_assigned() returns if the characters are assigned Unicode codepoints.", "title": "Add Unicode informational functions", "commits": ["a02b37fc0"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "cc44735a328c5003cc930a3cd22d093eb987f9f35465efa045b11f64f247c3b1", "section_path": ["Functions"], "commit_groups": [["a02b37fc0"]], "identity_text": "Add Unicode informational functions (Jeff Davis) Function unicode_version() returns the Unicode version, icu_unicode_version() returns the ICU version, and unicode_assigned() returns if the characters are assigned Unicode codepoints.", "commit_aliases": ["a02b37fc0"], "source_commits": ["a02b37fc0"], "source_entry_id": "17.0/changes/091", "db_id": "d461ed69798162833d67b79760bc6525", "patch_ids": ["79931fb543631c90cf16f622153dcdc3"], "statement_hash": "a1d1655351883763ed2a864b4deec2ce5e85fccaea293c517129d5e0c9702f96", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-494f1d91a0300988", "migration": false}, {"id": "17.0-5ccd346f04edf0a2", "cves": [], "html": "<p>Add function <a href=\"/docs/17/functions-xml.html#FUNCTIONS-PRODUCING-XML-XMLTEXT\" title=\"9.15.1.1.\u00a0xmltext\"><code>xmltext()</code></a> to convert text to a single <code>XML</code> text node (Jim Jones) <a href=\"https://postgr.es/c/526fe0d79\">\u00a7</a></p>", "text": "Add function xmltext() to convert text to a single XML text node (Jim Jones) \u00a7", "title": "Add function xmltext() to convert text to a single XML text node", "commits": ["526fe0d79"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "a8547f5cf6e52679045cac92e08ad98b7c6ed7bd7e428b1d7933b00151b10475", "section_path": ["Functions"], "commit_groups": [["526fe0d79"]], "identity_text": "Add function xmltext() to convert text to a single XML text node (Jim Jones)", "commit_aliases": ["526fe0d79"], "source_commits": ["526fe0d79"], "source_entry_id": "17.0/changes/092", "db_id": "1877441fdff0113af5f67821ab127f39", "patch_ids": ["9c6951624d11cf3d980c925a55d8604b"], "statement_hash": "603c2a1c52b94398ad4435b66a1a0c7ea097cc75143f6817eadf051c5692a51d", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-5ccd346f04edf0a2", "migration": false}, {"id": "17.0-c536e7b4cfb3961e", "cves": [], "html": "<p>Add function <a href=\"/docs/17/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"Table\u00a09.74.\u00a0System Catalog Information Functions\"><code>to_regtypemod()</code></a> to return the type modifier of a type specification (David Wheeler, Erik Wienhold) <a href=\"https://postgr.es/c/1218ca995\">\u00a7</a></p>", "text": "Add function to_regtypemod() to return the type modifier of a type specification (David Wheeler, Erik Wienhold) \u00a7", "title": "Add function to_regtypemod() to return the type modifier of a type specification", "commits": ["1218ca995"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "31b0aef9ac9e882d085f454104b14628907596f21025d6090bf9be74e6fa58e4", "section_path": ["Functions"], "commit_groups": [["1218ca995"]], "identity_text": "Add function to_regtypemod() to return the type modifier of a type specification (David Wheeler, Erik Wienhold)", "commit_aliases": ["1218ca995"], "source_commits": ["1218ca995"], "source_entry_id": "17.0/changes/093", "db_id": "243583233ea3761d5c32bc0a323576bb", "patch_ids": ["eee42d82f43164744d81f88a590991e5"], "statement_hash": "88fe82e132fbfb440b0373e765d49d5eff84d502cbf9ed87c8f952702df07468", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-c536e7b4cfb3961e", "migration": false}, {"id": "17.0-e40f088364f37b00", "cves": [], "html": "<p>Add <a href=\"/docs/17/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"Table\u00a09.74.\u00a0System Catalog Information Functions\"><code>pg_basetype()</code></a> function to return a domain's base type (Steve Chavez) <a href=\"https://postgr.es/c/b154d8a6d\">\u00a7</a></p>", "text": "Add pg_basetype() function to return a domain's base type (Steve Chavez) \u00a7", "title": "Add pg_basetype() function to return a domain's base type", "commits": ["b154d8a6d"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "159230e4dc9d755ccc2796fcb674ef0c6b101fcaea5c451a972ef93023aa68fc", "section_path": ["Functions"], "commit_groups": [["b154d8a6d"]], "identity_text": "Add pg_basetype() function to return a domain's base type (Steve Chavez)", "commit_aliases": ["b154d8a6d"], "source_commits": ["b154d8a6d"], "source_entry_id": "17.0/changes/094", "db_id": "1ac6aae931b6885a5a1689d1feca85be", "patch_ids": ["041c481b6638d7c950ec3b00379b1cda"], "statement_hash": "e0870c59d10b8c2c382a4f599f5b3e18b71c988021e88534d3592f4e89f1db87", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-e40f088364f37b00", "migration": false}, {"id": "17.0-c9398dfd3b0c4cea", "cves": [], "html": "<p>Add function <a href=\"/docs/17/functions-admin.html#FUNCTIONS-ADMIN-DBSIZE\" title=\"Table\u00a09.100.\u00a0Database Object Size Functions\"><code>pg_column_toast_chunk_id()</code></a> to return a value's <a href=\"/docs/17/storage-toast.html\" title=\"65.2.\u00a0TOAST\"><acronym>TOAST</acronym></a> identifier (Yugo Nagata) <a href=\"https://postgr.es/c/d1162cfda\">\u00a7</a></p>\n<p>This returns <code>NULL</code> if the value is not stored in <acronym>TOAST</acronym>.</p>", "text": "Add function pg_column_toast_chunk_id() to return a value's TOAST identifier (Yugo Nagata) \u00a7 This returns NULL if the value is not stored in TOAST.", "title": "Add function pg_column_toast_chunk_id() to return a value's TOAST identifier", "commits": ["d1162cfda"], "section": "Functions", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-FUNCTIONS", "source_hash": "89b555b5746d659d0b70ee1ae06db67f62b70fa77a20a2a75ef5bcee32bdad4c", "section_path": ["Functions"], "commit_groups": [["d1162cfda"]], "identity_text": "Add function pg_column_toast_chunk_id() to return a value's TOAST identifier (Yugo Nagata) This returns NULL if the value is not stored in TOAST.", "commit_aliases": ["d1162cfda"], "source_commits": ["d1162cfda"], "source_entry_id": "17.0/changes/095", "db_id": "63d8497e4d9efcd3afe8781f8345c5a2", "patch_ids": ["a55e787266d1dd8899bfb8744ace2c9e"], "statement_hash": "aeb0aaf8e1c69a242a8a4eccd846a7c4ae99ec503f7418091059cd8d67a0228b", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-c9398dfd3b0c4cea", "migration": false}, {"id": "17.0-82dca12de35b6b18", "cves": [], "html": "<p>Allow plpgsql <a href=\"/docs/17/plpgsql-declarations.html#PLPGSQL-DECLARATION-TYPE\" title=\"41.3.3.\u00a0Copying Types\"><code>%TYPE</code></a> and <code>%ROWTYPE</code> specifications to represent arrays of non-array types (Quan Zongliang, Pavel Stehule) <a href=\"https://postgr.es/c/5e8674dc8\">\u00a7</a></p>", "text": "Allow plpgsql %TYPE and %ROWTYPE specifications to represent arrays of non-array types (Quan Zongliang, Pavel Stehule) \u00a7", "title": "Allow plpgsql %TYPE and %ROWTYPE specifications to represent arrays of non-array types", "commits": ["5e8674dc8"], "section": "PL/pgSQL", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PLPGSQL", "source_hash": "d2d82be0430588de611f07e64029399a56514fd2ccf8e80fb469c30f20202b2c", "section_path": ["PL/pgSQL"], "commit_groups": [["5e8674dc8"]], "identity_text": "Allow plpgsql %TYPE and %ROWTYPE specifications to represent arrays of non-array types (Quan Zongliang, Pavel Stehule)", "commit_aliases": ["5e8674dc8"], "source_commits": ["5e8674dc8"], "source_entry_id": "17.0/changes/096", "db_id": "27417eec43c1f8b072777de9836477dd", "patch_ids": ["991a7837ed74853ade1ccbe83142e661"], "statement_hash": "d7f7c1a225fbb8c7456af5a794b6bf2e168476b0fa702e72a124cc016c4f5f5b", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-82dca12de35b6b18", "migration": false}, {"id": "17.0-a8e1488e653aa8bd", "cves": [], "html": "<p>Allow plpgsql <code>%TYPE</code> specification to reference composite column (Tom Lane) <a href=\"https://postgr.es/c/43b46aae1\">\u00a7</a></p>", "text": "Allow plpgsql %TYPE specification to reference composite column (Tom Lane) \u00a7", "title": "Allow plpgsql %TYPE specification to reference composite column", "commits": ["43b46aae1"], "section": "PL/pgSQL", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PLPGSQL", "source_hash": "8fb53a2c86d97e1743dbbae9deedea2ff680d532e4f352320f737685f43c6d78", "section_path": ["PL/pgSQL"], "commit_groups": [["43b46aae1"]], "identity_text": "Allow plpgsql %TYPE specification to reference composite column (Tom Lane)", "commit_aliases": ["43b46aae1"], "source_commits": ["43b46aae1"], "source_entry_id": "17.0/changes/097", "db_id": "9219928ca5c3c63ead4103ee4da5e78e", "patch_ids": ["3cf692449e6e9aff99468579d31d1c7b"], "statement_hash": "23c35f3cfba2e9ae18301738baf9d3427a025672ca765e43b2d92f71ad17bb47", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-a8e1488e653aa8bd", "migration": false}, {"id": "17.0-8f1363ef60c2ee48", "cves": [], "html": "<p>Add libpq function to change role passwords (Joe Conway) <a href=\"https://postgr.es/c/a7be2a6c2\">\u00a7</a></p>\n<p>The new function, <a href=\"/docs/17/libpq-misc.html#LIBPQ-PQCHANGEPASSWORD\"><code>PQchangePassword()</code></a>, hashes the new password before sending it to the server.</p>", "text": "Add libpq function to change role passwords (Joe Conway) \u00a7 The new function, PQchangePassword(), hashes the new password before sending it to the server.", "title": "Add libpq function to change role passwords", "commits": ["a7be2a6c2"], "section": "libpq", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LIBPQ", "source_hash": "9fc576c104bc59f8fbf48e1e63483098eb99a4c5d90785bc6b0d201c892484cf", "section_path": ["libpq"], "commit_groups": [["a7be2a6c2"]], "identity_text": "Add libpq function to change role passwords (Joe Conway) The new function, PQchangePassword(), hashes the new password before sending it to the server.", "commit_aliases": ["a7be2a6c2"], "source_commits": ["a7be2a6c2"], "source_entry_id": "17.0/changes/098", "db_id": "15829665cb6976b143b7486cff36a909", "patch_ids": ["7464bef8a4865a6f9545e62e22109345"], "statement_hash": "5133f17d17db2d9bdf071e8102e6f07998fd2a0144edc54550b05dcdb95a96d2", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-8f1363ef60c2ee48", "migration": false}, {"id": "17.0-c80a0f021b695098", "cves": [], "html": "<p>Add libpq functions to close portals and prepared statements (Jelte Fennema-Nio) <a href=\"https://postgr.es/c/28b572656\">\u00a7</a></p>\n<p>The functions are <a href=\"/docs/17/libpq-exec.html#LIBPQ-PQCLOSEPREPARED\"><code>PQclosePrepared()</code></a>, <a href=\"/docs/17/libpq-exec.html#LIBPQ-PQCLOSEPORTAL\"><code>PQclosePortal()</code></a>, <a href=\"/docs/17/libpq-async.html#LIBPQ-PQSENDCLOSEPREPARED\"><code>PQsendClosePrepared()</code></a>, and <a href=\"/docs/17/libpq-async.html#LIBPQ-PQSENDCLOSEPORTAL\"><code>PQsendClosePortal()</code></a>.</p>", "text": "Add libpq functions to close portals and prepared statements (Jelte Fennema-Nio) \u00a7 The functions are PQclosePrepared(), PQclosePortal(), PQsendClosePrepared(), and PQsendClosePortal().", "title": "Add libpq functions to close portals and prepared statements", "commits": ["28b572656"], "section": "libpq", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LIBPQ", "source_hash": "ab56a143b585bdba8c62b390dc65d84b22d44fb878c5b2daa1d68049be1ee8b6", "section_path": ["libpq"], "commit_groups": [["28b572656"]], "identity_text": "Add libpq functions to close portals and prepared statements (Jelte Fennema-Nio) The functions are PQclosePrepared(), PQclosePortal(), PQsendClosePrepared(), and PQsendClosePortal().", "commit_aliases": ["28b572656"], "source_commits": ["28b572656"], "source_entry_id": "17.0/changes/099", "db_id": "bc87b74f9a0f17afe1a8ebc55c34a059", "patch_ids": ["0889393c3a80d3b2375dc7514ff6ce53"], "statement_hash": "5b993bad378b1ae709505bb74f286b257857b424ad8c211f48e92006b5919bc8", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-c80a0f021b695098", "migration": false}, {"id": "17.0-d7d9937299d79c81", "cves": [], "html": "<p>Add libpq <acronym>API</acronym> which allows for blocking and non-blocking <a href=\"/docs/17/libpq-cancel.html\" title=\"32.7.\u00a0Canceling Queries in Progress\">cancel requests</a>, with encryption if already in use (Jelte Fennema-Nio) <a href=\"https://postgr.es/c/61461a300\">\u00a7</a></p>\n<p>Previously only blocking, unencrypted cancel requests were supported.</p>", "text": "Add libpq API which allows for blocking and non-blocking cancel requests, with encryption if already in use (Jelte Fennema-Nio) \u00a7 Previously only blocking, unencrypted cancel requests were supported.", "title": "Add libpq API which allows for blocking and non-blocking cancel requests, with encryption if already in use", "commits": ["61461a300"], "section": "libpq", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LIBPQ", "source_hash": "d54e119a239b7eb1cae8c3130cd0674ae27b7ef92186f73d91ffc7bf6852ad29", "section_path": ["libpq"], "commit_groups": [["61461a300"]], "identity_text": "Add libpq API which allows for blocking and non-blocking cancel requests, with encryption if already in use (Jelte Fennema-Nio) Previously only blocking, unencrypted cancel requests were supported.", "commit_aliases": ["61461a300"], "source_commits": ["61461a300"], "source_entry_id": "17.0/changes/100", "db_id": "c41ab395c090156bd1e99f1f0bcb60ee", "patch_ids": ["895b811a613eec2d6f1b1e045c75002d"], "statement_hash": "dc23fb5befb8e28cecd4ba96534d7c822571aae4d3edc69402ad77c648851df8", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-d7d9937299d79c81", "migration": false}, {"id": "17.0-70a8f09f04e91acb", "cves": [], "html": "<p>Add libpq function <a href=\"/docs/17/libpq-connect.html#LIBPQ-PQSOCKETPOLL\"><code>PQsocketPoll()</code></a> to allow polling of network sockets (Tristan Partin, Tom Lane) <a href=\"https://postgr.es/c/f5e4dedfa\">\u00a7</a> <a href=\"https://postgr.es/c/105024a47\">\u00a7</a></p>", "text": "Add libpq function PQsocketPoll() to allow polling of network sockets (Tristan Partin, Tom Lane) \u00a7 \u00a7", "title": "Add libpq function PQsocketPoll() to allow polling of network sockets", "commits": ["105024a47", "f5e4dedfa"], "section": "libpq", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LIBPQ", "source_hash": "48303b5fe0787d7cd3241263413ef7e33b22fedf5103c236ffab2bcab83e5853", "section_path": ["libpq"], "commit_groups": [["105024a47"], ["f5e4dedfa"]], "identity_text": "Add libpq function PQsocketPoll() to allow polling of network sockets (Tristan Partin, Tom Lane)", "commit_aliases": ["105024a47", "f5e4dedfa"], "source_commits": ["105024a47", "f5e4dedfa"], "source_entry_id": "17.0/changes/101", "db_id": "cbaf3bd64377062f45eb643434a082da", "patch_ids": ["1d6b53edfe0dfa07054804b7886c5f0f", "5dc602181eb1c14c50c7859db0730c15"], "statement_hash": "c22c6425617054d93f26eb1659d3959ffeff78ab6808c2b85d4884450d064a1d", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-70a8f09f04e91acb", "migration": false}, {"id": "17.0-6c38a752a789111c", "cves": [], "html": "<p>Add libpq function <a href=\"/docs/17/libpq-pipeline-mode.html#LIBPQ-PQSENDPIPELINESYNC\"><code>PQsendPipelineSync()</code></a> to send a pipeline synchronization point (Anton Kirilov) <a href=\"https://postgr.es/c/4794c2d31\">\u00a7</a></p>\n<p>This is similar to <a href=\"/docs/17/libpq-pipeline-mode.html#LIBPQ-PQPIPELINESYNC\"><code>PQpipelineSync()</code></a> but it does not flush to the server unless the size threshold of the output buffer is reached.</p>", "text": "Add libpq function PQsendPipelineSync() to send a pipeline synchronization point (Anton Kirilov) \u00a7 This is similar to PQpipelineSync() but it does not flush to the server unless the size threshold of the output buffer is reached.", "title": "Add libpq function PQsendPipelineSync() to send a pipeline synchronization point", "commits": ["4794c2d31"], "section": "libpq", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LIBPQ", "source_hash": "8189d6207100374bd35e8290afa5e52e847ee3e93677bccbfa70981e5e50a7af", "section_path": ["libpq"], "commit_groups": [["4794c2d31"]], "identity_text": "Add libpq function PQsendPipelineSync() to send a pipeline synchronization point (Anton Kirilov) This is similar to PQpipelineSync() but it does not flush to the server unless the size threshold of the output buffer is reached.", "commit_aliases": ["4794c2d31"], "source_commits": ["4794c2d31"], "source_entry_id": "17.0/changes/102", "db_id": "fec589edef84133148b8e4f4604a3e3b", "patch_ids": ["3d5d00ece3bd96007583518d3b3e0e60"], "statement_hash": "f24a3ad0b4080f9dcdaae066bff38f70a2920434f9e3854a6b1890794b058986", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-6c38a752a789111c", "migration": false}, {"id": "17.0-3b4a443271748749", "cves": [], "html": "<p>Add libpq function <a href=\"/docs/17/libpq-single-row-mode.html#LIBPQ-PQSETCHUNKEDROWSMODE\"><code>PQsetChunkedRowsMode()</code></a> to allow retrieval of results in chunks (Daniel V\u00e9rit\u00e9) <a href=\"https://postgr.es/c/4643a2b26\">\u00a7</a></p>", "text": "Add libpq function PQsetChunkedRowsMode() to allow retrieval of results in chunks (Daniel V\u00e9rit\u00e9) \u00a7", "title": "Add libpq function PQsetChunkedRowsMode() to allow retrieval of results in chunks", "commits": ["4643a2b26"], "section": "libpq", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LIBPQ", "source_hash": "8aa8cff2a847cbac68b2ae2a469967a4cf97cc0874f466b050a47300adc8f9df", "section_path": ["libpq"], "commit_groups": [["4643a2b26"]], "identity_text": "Add libpq function PQsetChunkedRowsMode() to allow retrieval of results in chunks (Daniel V\u00e9rit\u00e9)", "commit_aliases": ["4643a2b26"], "source_commits": ["4643a2b26"], "source_entry_id": "17.0/changes/103", "db_id": "165ca2b770af42738a526033a6a7fa80", "patch_ids": ["ab07549493f029cf0fa1f28f879b6f5f"], "statement_hash": "3927bb31374c19f76299bfb5efb43c7cd17dbc30022d8220b2040405cd597014", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-3b4a443271748749", "migration": false}, {"id": "17.0-f7ebd67eecc76635", "cves": [], "html": "<p>Allow <acronym>TLS</acronym> connections without requiring a network round-trip negotiation (Greg Stark, Heikki Linnakangas, Peter Eisentraut, Michael Paquier, Daniel Gustafsson) <a href=\"https://postgr.es/c/d39a49c1e\">\u00a7</a> <a href=\"https://postgr.es/c/91044ae4b\">\u00a7</a> <a href=\"https://postgr.es/c/44e27f0a6\">\u00a7</a> <a href=\"https://postgr.es/c/d80f2ce29\">\u00a7</a> <a href=\"https://postgr.es/c/03a0e0d4b\">\u00a7</a> <a href=\"https://postgr.es/c/17a834a04\">\u00a7</a> <a href=\"https://postgr.es/c/407e0b023\">\u00a7</a> <a href=\"https://postgr.es/c/fb5718f35\">\u00a7</a></p>\n<p>This is enabled with the client-side option <a href=\"/docs/17/libpq-connect.html#LIBPQ-CONNECT-SSLNEGOTIATION\"><code>sslnegotiation=direct</code></a>, requires <acronym>ALPN</acronym>, and only works on <span>PostgreSQL</span> 17 and later servers.</p>", "text": "Allow TLS connections without requiring a network round-trip negotiation (Greg Stark, Heikki Linnakangas, Peter Eisentraut, Michael Paquier, Daniel Gustafsson) \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 This is enabled with the client-side option sslnegotiation=direct, requires ALPN, and only works on PostgreSQL 17 and later servers.", "title": "Allow TLS connections without requiring a network round-trip negotiation", "commits": ["03a0e0d4b", "17a834a04", "407e0b023", "44e27f0a6", "91044ae4b", "d39a49c1e", "d80f2ce29", "fb5718f35"], "section": "libpq", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-LIBPQ", "source_hash": "f68bb7d963740e1fac33c19d5831fce83b430b07aad2b1e8c08df801f63fe84f", "section_path": ["libpq"], "commit_groups": [["03a0e0d4b"], ["17a834a04"], ["407e0b023"], ["44e27f0a6"], ["91044ae4b"], ["d39a49c1e"], ["d80f2ce29"], ["fb5718f35"]], "identity_text": "Allow TLS connections without requiring a network round-trip negotiation (Greg Stark, Heikki Linnakangas, Peter Eisentraut, Michael Paquier, Daniel Gustafsson) This is enabled with the client-side option sslnegotiation=direct, requires ALPN, and only works on PostgreSQL 17 and later servers.", "commit_aliases": ["03a0e0d4b", "17a834a04", "407e0b023", "44e27f0a6", "91044ae4b", "d39a49c1e", "d80f2ce29", "fb5718f35"], "source_commits": ["03a0e0d4b", "17a834a04", "407e0b023", "44e27f0a6", "91044ae4b", "d39a49c1e", "d80f2ce29", "fb5718f35"], "source_entry_id": "17.0/changes/104", "db_id": "fb19ddd358bfbe1c1292f9b00df8a32f", "patch_ids": ["0859fade916556a425d8d800b9b339e3", "3977f3fad04ce8a2b910b61e555db125", "51564b11e695ac56a10791153869fe5e", "6251866539f346c6cb889d2fa2d25f55", "682c4e3071cd582a50bb0e71fda920b3", "88ec9faec3acf974fc1e2b60029bc059", "916ece1653632e038584ec18ff29655e", "aa89e4b3b0a69caec96cfd02910b6cfe"], "statement_hash": "749c6dad575a6af589dc46a8832a99dd52f11e5f0daf4d29c7c76d203ff294b0", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-f7ebd67eecc76635", "migration": false}, {"id": "17.0-25d32605e982883f-1", "cves": [], "html": "<p>Improve <span>psql</span> display of default and empty privileges (Erik Wienhold, Laurenz Albe) <a href=\"https://postgr.es/c/d1379ebf4\">\u00a7</a></p>\n<p>Command <code>\\dp</code> now displays <code>(none)</code> for empty privileges; default still displays as empty.</p>", "text": "Improve psql display of default and empty privileges (Erik Wienhold, Laurenz Albe) \u00a7 Command \\dp now displays (none) for empty privileges; default still displays as empty.", "title": "Improve psql display of default and empty privileges", "commits": ["d1379ebf4"], "section": "psql", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PSQL", "source_hash": "d4afbedc055942c8a9811944814c172c0d0ba38bfc5a8232093abd9e0db38e13", "section_path": ["psql"], "commit_groups": [["d1379ebf4"]], "identity_text": "Improve psql display of default and empty privileges (Erik Wienhold, Laurenz Albe) Command \\dp now displays (none) for empty privileges; default still displays as empty.", "commit_aliases": ["d1379ebf4"], "source_commits": ["d1379ebf4"], "source_entry_id": "17.0/changes/105", "db_id": "a3feb7cbb6e76e80ed09f7b28383c023", "patch_ids": ["842b2ae80cd9f3d47a7a7e791f8289a8"], "statement_hash": "55a4a8f4f1450e89b21e7fe47bcac030b79e7db736f92f904303eb06839cba7c", "relations": [{"rule": 2, "type": "related", "target": "d8a972240c18977c1d8140fe0ed0dce3", "evidence": {"same_day": true, "patch_ids": ["842b2ae80cd9f3d47a7a7e791f8289a8"], "ambiguous_patch_ids": ["842b2ae80cd9f3d47a7a7e791f8289a8"]}}], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-25d32605e982883f-1", "migration": false}, {"id": "17.0-25d32605e982883f-2", "cves": [], "html": "<p>Have backslash commands honor <code>\\pset null</code> (Erik Wienhold, Laurenz Albe) <a href=\"https://postgr.es/c/d1379ebf4\">\u00a7</a></p>\n<p>Previously <code>\\pset null</code> was ignored.</p>", "text": "Have backslash commands honor \\pset null (Erik Wienhold, Laurenz Albe) \u00a7 Previously \\pset null was ignored.", "title": "Have backslash commands honor \\pset null", "commits": ["d1379ebf4"], "section": "psql", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PSQL", "source_hash": "5689d9179a0d774614c82a48d411ff08f745291a58b25bbdff92ea18d479bd74", "section_path": ["psql"], "commit_groups": [["d1379ebf4"]], "identity_text": "Have backslash commands honor \\pset null (Erik Wienhold, Laurenz Albe) Previously \\pset null was ignored.", "commit_aliases": ["d1379ebf4"], "source_commits": ["d1379ebf4"], "source_entry_id": "17.0/changes/106", "db_id": "d8a972240c18977c1d8140fe0ed0dce3", "patch_ids": ["842b2ae80cd9f3d47a7a7e791f8289a8"], "statement_hash": "f692c90220e75dc03007d5e5881cea74d5ea774be7f28b89b2d90f17facccfe9", "relations": [{"rule": 2, "type": "related", "target": "a3feb7cbb6e76e80ed09f7b28383c023", "evidence": {"same_day": true, "patch_ids": ["842b2ae80cd9f3d47a7a7e791f8289a8"], "ambiguous_patch_ids": ["842b2ae80cd9f3d47a7a7e791f8289a8"]}}], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-25d32605e982883f-2", "migration": false}, {"id": "17.0-3334181adffd92fa", "cves": [], "html": "<p>Allow <span>psql</span>'s <code>\\watch</code> to stop after a minimum number of rows returned (Greg Sabino Mullane) <a href=\"https://postgr.es/c/f347ec76e\">\u00a7</a></p>\n<p>The parameter is <code>min_rows</code>.</p>", "text": "Allow psql's \\watch to stop after a minimum number of rows returned (Greg Sabino Mullane) \u00a7 The parameter is min_rows.", "title": "Allow psql's \\watch to stop after a minimum number of rows returned", "commits": ["f347ec76e"], "section": "psql", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PSQL", "source_hash": "7107b65aadf1179e0ea1259bb1b753457a6a68c9b73cee13845f7e5b6618a0d6", "section_path": ["psql"], "commit_groups": [["f347ec76e"]], "identity_text": "Allow psql's \\watch to stop after a minimum number of rows returned (Greg Sabino Mullane) The parameter is min_rows.", "commit_aliases": ["f347ec76e"], "source_commits": ["f347ec76e"], "source_entry_id": "17.0/changes/107", "db_id": "45ff7c8c03d6e4103c9e41abb47b1842", "patch_ids": ["8fed80202eb4723f794e4f8125adef5c"], "statement_hash": "dfa38800684886dcdb5c7fe6179c692535d6511a0ae88ffa932b5c3c42306105", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-3334181adffd92fa", "migration": false}, {"id": "17.0-cfdb9648451933ed", "cves": [], "html": "<p>Allow <span>psql</span> connection attempts to be canceled with control-C (Tristan Partin) <a href=\"https://postgr.es/c/cafe10565\">\u00a7</a></p>", "text": "Allow psql connection attempts to be canceled with control-C (Tristan Partin) \u00a7", "title": "Allow psql connection attempts to be canceled with control-C", "commits": ["cafe10565"], "section": "psql", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PSQL", "source_hash": "a229fbb00722a40bf043a201d2213121b68758f1fc7a9696ec6f512a332219de", "section_path": ["psql"], "commit_groups": [["cafe10565"]], "identity_text": "Allow psql connection attempts to be canceled with control-C (Tristan Partin)", "commit_aliases": ["cafe10565"], "source_commits": ["cafe10565"], "source_entry_id": "17.0/changes/108", "db_id": "49dd3ce0aded54b35e4242824e547154", "patch_ids": ["3ad09a5ea75ff8abcb322c7fb9ec1ea8"], "statement_hash": "32418ca3ad990c96973186460ab2da2a7d3a31af0f39d15632c0ec4506068398", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-cfdb9648451933ed", "migration": false}, {"id": "17.0-977aedb721071846", "cves": [], "html": "<p>Allow <span>psql</span> to honor <code>FETCH_COUNT</code> for non-<code>SELECT</code> queries (Daniel V\u00e9rit\u00e9) <a href=\"https://postgr.es/c/90f517821\">\u00a7</a></p>", "text": "Allow psql to honor FETCH_COUNT for non-SELECT queries (Daniel V\u00e9rit\u00e9) \u00a7", "title": "Allow psql to honor FETCH_COUNT for non-SELECT queries", "commits": ["90f517821"], "section": "psql", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PSQL", "source_hash": "5b873d1cc1fefc393c34e069c2986b611c283c347cc6c996df3412f2cb25de75", "section_path": ["psql"], "commit_groups": [["90f517821"]], "identity_text": "Allow psql to honor FETCH_COUNT for non-SELECT queries (Daniel V\u00e9rit\u00e9)", "commit_aliases": ["90f517821"], "source_commits": ["90f517821"], "source_entry_id": "17.0/changes/109", "db_id": "39a7fad6f3d8673b8fb6a1a7dc7d81be", "patch_ids": ["f9a1e3c0862a9d53dd1a1ad0eab6ecc7"], "statement_hash": "83d091a0e7acbf30315e09e51164b1345c97a8a59b2b9ed1517b7ce088a9797d", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-977aedb721071846", "migration": false}, {"id": "17.0-93a6ad1bd3c065d9", "cves": [], "html": "<p>Improve <span>psql</span> tab completion (Dagfinn Ilmari Manns\u00e5ker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Pavel Borisov, Jian He) <a href=\"https://postgr.es/c/c951e9042\">\u00a7</a> <a href=\"https://postgr.es/c/d16eb83ab\">\u00a7</a> <a href=\"https://postgr.es/c/cd3424748\">\u00a7</a> <a href=\"https://postgr.es/c/816f10564\">\u00a7</a> <a href=\"https://postgr.es/c/927332b95\">\u00a7</a> <a href=\"https://postgr.es/c/f1bb9284f\">\u00a7</a> <a href=\"https://postgr.es/c/304b6b1a6\">\u00a7</a> <a href=\"https://postgr.es/c/2800fbb2b\">\u00a7</a></p>", "text": "Improve psql tab completion (Dagfinn Ilmari Manns\u00e5ker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Pavel Borisov, Jian He) \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7", "title": "Improve psql tab completion", "commits": ["2800fbb2b", "304b6b1a6", "816f10564", "927332b95", "c951e9042", "cd3424748", "d16eb83ab", "f1bb9284f"], "section": "psql", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PSQL", "source_hash": "5ec74edd9164024c9c6f26a998c983938ae467504edf3382816a070717dd2cb9", "section_path": ["psql"], "commit_groups": [["2800fbb2b"], ["304b6b1a6"], ["816f10564"], ["927332b95"], ["c951e9042"], ["cd3424748"], ["d16eb83ab"], ["f1bb9284f"]], "identity_text": "Improve psql tab completion (Dagfinn Ilmari Manns\u00e5ker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Pavel Borisov, Jian He)", "commit_aliases": ["2800fbb2b", "304b6b1a6", "816f10564", "927332b95", "c951e9042", "cd3424748", "d16eb83ab", "f1bb9284f"], "source_commits": ["2800fbb2b", "304b6b1a6", "816f10564", "927332b95", "c951e9042", "cd3424748", "d16eb83ab", "f1bb9284f"], "source_entry_id": "17.0/changes/110", "db_id": "8a83a68cf9c642d6f0d81dd5c4538939", "patch_ids": ["30b0e0d67c96e1af3a5dcb5764554836", "322a658f6fe8acba4737659a5aa67064", "47b0c548f88b8732b47e85c8d15f6508", "4c89f0d9a6a6f19c5e8f969fa03dc795", "89e3073da799734a59c68448468364a2", "8f0cd536103759c943a4a1f4310b1a31", "9913c02b11bf9cd854643f389b9fbb2f", "9fbd7907ba6c4447e8fcd062aed96976"], "statement_hash": "0e0c30574ccccd247ef0267b9022929d97ae219ca405903d917fa8b9c007e2fd", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-93a6ad1bd3c065d9", "migration": false}, {"id": "17.0-7fb90cb9fd1fe1c1", "cves": [], "html": "<p>Add application <a href=\"/docs/17/app-pgwalsummary.html\" title=\"pg_walsummary\"><span>pg_walsummary</span></a> to dump <acronym>WAL</acronym> summary files (Robert Haas) <a href=\"https://postgr.es/c/ee1bfd168\">\u00a7</a></p>", "text": "Add application pg_walsummary to dump WAL summary files (Robert Haas) \u00a7", "title": "Add application pg_walsummary to dump WAL summary files", "commits": ["ee1bfd168"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "be92d8f8d514c31de3e7864da8bc02d1082f90ce243b5ac0122a1f15ca057984", "section_path": ["Server Applications"], "commit_groups": [["ee1bfd168"]], "identity_text": "Add application pg_walsummary to dump WAL summary files (Robert Haas)", "commit_aliases": ["ee1bfd168"], "source_commits": ["ee1bfd168"], "source_entry_id": "17.0/changes/111", "db_id": "d3dc6ba36a8f40a3270798a39dc903da", "patch_ids": ["17673204e54def221f01494b2d75083a"], "statement_hash": "4e29b800a84b12f2c104da5f4dede1f0b3f3c8b23e25b94008bff0587ef561d2", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-7fb90cb9fd1fe1c1", "migration": false}, {"id": "17.0-bc48047adfe60a3f", "cves": [], "html": "<p>Allow <a href=\"/docs/17/app-pgdump.html\" title=\"pg_dump\"><span>pg_dump</span></a>'s large objects to be restorable in batches (Tom Lane) <a href=\"https://postgr.es/c/a45c78e32\">\u00a7</a></p>\n<p>This allows the restoration of many large objects to avoid transaction limits and to be restored in parallel.</p>", "text": "Allow pg_dump's large objects to be restorable in batches (Tom Lane) \u00a7 This allows the restoration of many large objects to avoid transaction limits and to be restored in parallel.", "title": "Allow pg_dump's large objects to be restorable in batches", "commits": ["a45c78e32"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "e19c0d4e8698607c86d131f57ccec046853a089f8dbd7ba4f7ec1e2a0f642799", "section_path": ["Server Applications"], "commit_groups": [["a45c78e32"]], "identity_text": "Allow pg_dump's large objects to be restorable in batches (Tom Lane) This allows the restoration of many large objects to avoid transaction limits and to be restored in parallel.", "commit_aliases": ["a45c78e32"], "source_commits": ["a45c78e32"], "source_entry_id": "17.0/changes/112", "db_id": "062c082924121dc8b43d7d09e1fa17d4", "patch_ids": ["01587d1147cb509a46ece174e411b501"], "statement_hash": "d574aaffe562e11a8f628d13c56040f9dbe7164043c409abcf6ab7703802d162", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-bc48047adfe60a3f", "migration": false}, {"id": "17.0-93f66aa947ba8d25", "cves": [], "html": "<p>Add <span>pg_dump</span> option <code>--exclude-extension</code> (Ayush Vatsa) <a href=\"https://postgr.es/c/522ed12f7\">\u00a7</a></p>", "text": "Add pg_dump option --exclude-extension (Ayush Vatsa) \u00a7", "title": "Add pg_dump option --exclude-extension", "commits": ["522ed12f7"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "09f31e6990e10c24ef444387656c434b2c3127d0f34794bc1853569e1a269e09", "section_path": ["Server Applications"], "commit_groups": [["522ed12f7"]], "identity_text": "Add pg_dump option --exclude-extension (Ayush Vatsa)", "commit_aliases": ["522ed12f7"], "source_commits": ["522ed12f7"], "source_entry_id": "17.0/changes/113", "db_id": "c720c385368aecd31b17498de49a0e31", "patch_ids": ["955aad17a791ac5c652f14bb03633841"], "statement_hash": "4b3a5ac8af8590ad6d797832622ecb139520115a75a5d57e67d899f1f2fdd40a", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-93f66aa947ba8d25", "migration": false}, {"id": "17.0-2cc427350b3a5a90", "cves": [], "html": "<p>Allow <a href=\"/docs/17/app-pgdump.html\" title=\"pg_dump\"><span>pg_dump</span></a>, <a href=\"/docs/17/app-pg-dumpall.html\" title=\"pg_dumpall\"><span>pg_dumpall</span></a>, and <a href=\"/docs/17/app-pgrestore.html\" title=\"pg_restore\"><span>pg_restore</span></a> to specify include/exclude objects in a file (Pavel Stehule, Daniel Gustafsson) <a href=\"https://postgr.es/c/a5cf808be\">\u00a7</a></p>\n<p>The option is called <code>--filter</code>.</p>", "text": "Allow pg_dump, pg_dumpall, and pg_restore to specify include/exclude objects in a file (Pavel Stehule, Daniel Gustafsson) \u00a7 The option is called --filter.", "title": "Allow pg_dump, pg_dumpall, and pg_restore to specify include/exclude objects in a file", "commits": ["a5cf808be"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "01c1d7619eb94b800b69c839e53f60adf6ec57e8bdedb78c92cbac9d9d11c233", "section_path": ["Server Applications"], "commit_groups": [["a5cf808be"]], "identity_text": "Allow pg_dump, pg_dumpall, and pg_restore to specify include/exclude objects in a file (Pavel Stehule, Daniel Gustafsson) The option is called --filter.", "commit_aliases": ["a5cf808be"], "source_commits": ["a5cf808be"], "source_entry_id": "17.0/changes/114", "db_id": "6e921a29d96eba39cb9a12aca845c19d", "patch_ids": ["0ed3de9da8db79e916dcff314dc14916"], "statement_hash": "e985ba10a8d813ffd4dcb78315ec3677ea1c684b78d9b1a616df0199244e0733", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-2cc427350b3a5a90", "migration": false}, {"id": "17.0-9c17f58a908bcfdc", "cves": [], "html": "<p>Add the <code>--sync-method</code> parameter to several client applications (Justin Pryzby, Nathan Bossart) <a href=\"https://postgr.es/c/8c16ad3b4\">\u00a7</a></p>\n<p>The applications are <a href=\"/docs/17/app-initdb.html\" title=\"initdb\"><span>initdb</span></a>, <a href=\"/docs/17/app-pgbasebackup.html\" title=\"pg_basebackup\"><span>pg_basebackup</span></a>, <a href=\"/docs/17/app-pgchecksums.html\" title=\"pg_checksums\"><span>pg_checksums</span></a>, <a href=\"/docs/17/app-pgdump.html\" title=\"pg_dump\"><span>pg_dump</span></a>, <a href=\"/docs/17/app-pgrewind.html\" title=\"pg_rewind\"><span>pg_rewind</span></a>, and <a href=\"/docs/17/pgupgrade.html\" title=\"pg_upgrade\"><span>pg_upgrade</span></a>.</p>", "text": "Add the --sync-method parameter to several client applications (Justin Pryzby, Nathan Bossart) \u00a7 The applications are initdb, pg_basebackup, pg_checksums, pg_dump, pg_rewind, and pg_upgrade.", "title": "Add the --sync-method parameter to several client applications", "commits": ["8c16ad3b4"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "1303e5e826a2bb3868d866cad3c1ae1ac22fa9613a4c4ea2e013b36b2ac1bdc8", "section_path": ["Server Applications"], "commit_groups": [["8c16ad3b4"]], "identity_text": "Add the --sync-method parameter to several client applications (Justin Pryzby, Nathan Bossart) The applications are initdb, pg_basebackup, pg_checksums, pg_dump, pg_rewind, and pg_upgrade.", "commit_aliases": ["8c16ad3b4"], "source_commits": ["8c16ad3b4"], "source_entry_id": "17.0/changes/115", "db_id": "5be03430ce72863326f86554786d4856", "patch_ids": ["a77cb2d9cdf142e159627eaeacab0702"], "statement_hash": "e682acccfcf90a57d337b76922612b805d21091f20bf6c6623dff3be080bcb8a", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-9c17f58a908bcfdc", "migration": false}, {"id": "17.0-7a952b1362dfbe45", "cves": [], "html": "<p>Add <a href=\"/docs/17/app-pgrestore.html\" title=\"pg_restore\"><span>pg_restore</span></a> option <code>--transaction-size</code> to allow object restores in transaction batches (Tom Lane) <a href=\"https://postgr.es/c/959b38d77\">\u00a7</a></p>\n<p>This allows the performance benefits of transaction batches without the problems of excessively large transaction blocks.</p>", "text": "Add pg_restore option --transaction-size to allow object restores in transaction batches (Tom Lane) \u00a7 This allows the performance benefits of transaction batches without the problems of excessively large transaction blocks.", "title": "Add pg_restore option --transaction-size to allow object restores in transaction batches", "commits": ["959b38d77"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "17267ef422c757038cdb1494e4f7f2868de188fab8e78a8f8b25421498561393", "section_path": ["Server Applications"], "commit_groups": [["959b38d77"]], "identity_text": "Add pg_restore option --transaction-size to allow object restores in transaction batches (Tom Lane) This allows the performance benefits of transaction batches without the problems of excessively large transaction blocks.", "commit_aliases": ["959b38d77"], "source_commits": ["959b38d77"], "source_entry_id": "17.0/changes/116", "db_id": "d3fce2adcba58fc12b1abe09c1296c03", "patch_ids": ["5e34e60bd114dee6d27de4ef07db683e"], "statement_hash": "a3f29534cc391a88f5718d81056174323b7b0ffdf74ce97b2ca813e2124e10fe", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-7a952b1362dfbe45", "migration": false}, {"id": "17.0-c384e7a3f461c35c", "cves": [], "html": "<p>Change <a href=\"/docs/17/pgbench.html\" title=\"pgbench\"><span>pgbench</span></a> debug mode option from <code>-d</code> to <code>--debug</code> (Greg Sabino Mullane) <a href=\"https://postgr.es/c/3ff01b2b6\">\u00a7</a></p>\n<p>Option <code>-d</code> is now used for the database name, and the new <code>--dbname</code> option can be used as well.</p>", "text": "Change pgbench debug mode option from -d to --debug (Greg Sabino Mullane) \u00a7 Option -d is now used for the database name, and the new --dbname option can be used as well.", "title": "Change pgbench debug mode option from -d to --debug", "commits": ["3ff01b2b6"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "8f8c127f9354a296b7177dce7556a770360b2d079c7a04e96681ee7b782983c6", "section_path": ["Server Applications"], "commit_groups": [["3ff01b2b6"]], "identity_text": "Change pgbench debug mode option from -d to --debug (Greg Sabino Mullane) Option -d is now used for the database name, and the new --dbname option can be used as well.", "commit_aliases": ["3ff01b2b6"], "source_commits": ["3ff01b2b6"], "source_entry_id": "17.0/changes/117", "db_id": "814b6163607242f0a5325bfdd8d812c7", "patch_ids": ["199b1468636df5e00d3df58106afc14f"], "statement_hash": "261df8ddab2c41253badc617f040f9c03111599a5c7a54bdb1efd5c9e963aa17", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-c384e7a3f461c35c", "migration": false}, {"id": "17.0-904d132c3f8f0123", "cves": [], "html": "<p>Add pgbench option <code>--exit-on-abort</code> to exit after any client aborts (Yugo Nagata) <a href=\"https://postgr.es/c/3c662643c\">\u00a7</a></p>", "text": "Add pgbench option --exit-on-abort to exit after any client aborts (Yugo Nagata) \u00a7", "title": "Add pgbench option --exit-on-abort to exit after any client aborts", "commits": ["3c662643c"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "40657065824bc654fec133d919f02654aa046a2f83ebe8bbda2f58f5cf5bcf31", "section_path": ["Server Applications"], "commit_groups": [["3c662643c"]], "identity_text": "Add pgbench option --exit-on-abort to exit after any client aborts (Yugo Nagata)", "commit_aliases": ["3c662643c"], "source_commits": ["3c662643c"], "source_entry_id": "17.0/changes/118", "db_id": "a25ce17e6f8114f0d076f7a1742f9dfe", "patch_ids": ["fc15b08e3c71549c3ca32d04f9daa421"], "statement_hash": "3c07aae40b3a8ad1e44701b70006b4cbe2fb1e03274bcb81df11c4a5bcf24e33", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-904d132c3f8f0123", "migration": false}, {"id": "17.0-f74a0138a8a96fa8", "cves": [], "html": "<p>Add pgbench command <code>\\syncpipeline</code> to allow sending of sync messages (Anthonin Bonnefoy) <a href=\"https://postgr.es/c/94edfe250\">\u00a7</a></p>", "text": "Add pgbench command \\syncpipeline to allow sending of sync messages (Anthonin Bonnefoy) \u00a7", "title": "Add pgbench command \\syncpipeline to allow sending of sync messages", "commits": ["94edfe250"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "03a82448689e24e5d029010ce0b7e47a3ec65ba2e3eb0045cda192d4463f6de8", "section_path": ["Server Applications"], "commit_groups": [["94edfe250"]], "identity_text": "Add pgbench command \\syncpipeline to allow sending of sync messages (Anthonin Bonnefoy)", "commit_aliases": ["94edfe250"], "source_commits": ["94edfe250"], "source_entry_id": "17.0/changes/119", "db_id": "ee70b5491bf8a49ce7c18314a2ab3e7c", "patch_ids": ["5ca1e32d081de48ad74233cbb08afb22"], "statement_hash": "46a5465945c7e7b3ba2391bb4c7f284171defd7bbec08ff89ff0b01f417ea2c3", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-f74a0138a8a96fa8", "migration": false}, {"id": "17.0-ed36bf74f5dccefd", "cves": [], "html": "<p>Allow <a href=\"/docs/17/pgarchivecleanup.html\" title=\"pg_archivecleanup\"><span>pg_archivecleanup</span></a> to remove backup history files (Atsushi Torikoshi) <a href=\"https://postgr.es/c/3f8c98d0b\">\u00a7</a></p>\n<p>The option is <code>--clean-backup-history</code>.</p>", "text": "Allow pg_archivecleanup to remove backup history files (Atsushi Torikoshi) \u00a7 The option is --clean-backup-history.", "title": "Allow pg_archivecleanup to remove backup history files", "commits": ["3f8c98d0b"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "fa178bd435d168b9d0925d1bc986681c590b0c0fea8917a798a931aab42d2621", "section_path": ["Server Applications"], "commit_groups": [["3f8c98d0b"]], "identity_text": "Allow pg_archivecleanup to remove backup history files (Atsushi Torikoshi) The option is --clean-backup-history.", "commit_aliases": ["3f8c98d0b"], "source_commits": ["3f8c98d0b"], "source_entry_id": "17.0/changes/120", "db_id": "43de9c53a3b095b00a1c2d972cc4cd14", "patch_ids": ["880da8d0f1844f2cffcfb62d7caa2733"], "statement_hash": "18444fb728c062492ca13445b872237928821d56bd050da684f8558cbb5266fe", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-ed36bf74f5dccefd", "migration": false}, {"id": "17.0-47449a9d20a069ad", "cves": [], "html": "<p>Add some long options to <span>pg_archivecleanup</span> (Atsushi Torikoshi) <a href=\"https://postgr.es/c/dd7c60f19\">\u00a7</a></p>\n<p>The long options are <code>--debug</code>, <code>--dry-run</code>, and <code>--strip-extension</code>.</p>", "text": "Add some long options to pg_archivecleanup (Atsushi Torikoshi) \u00a7 The long options are --debug, --dry-run, and --strip-extension.", "title": "Add some long options to pg_archivecleanup", "commits": ["dd7c60f19"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "c64dda46baf6ccf879bf963b03618238b918615147472ab58bf96e8ddc400ea7", "section_path": ["Server Applications"], "commit_groups": [["dd7c60f19"]], "identity_text": "Add some long options to pg_archivecleanup (Atsushi Torikoshi) The long options are --debug, --dry-run, and --strip-extension.", "commit_aliases": ["dd7c60f19"], "source_commits": ["dd7c60f19"], "source_entry_id": "17.0/changes/121", "db_id": "01de18fe9f80c42de97f1e13ebb9087a", "patch_ids": ["d92935efb7fbe57a9923613e2a39db2f"], "statement_hash": "04eec46d490d77a1fadbc0a2f019b90e37fb6bdf271b81857633c422c897562f", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-47449a9d20a069ad", "migration": false}, {"id": "17.0-aac8cd2db069e502", "cves": [], "html": "<p>Allow <a href=\"/docs/17/app-pgbasebackup.html\" title=\"pg_basebackup\"><span>pg_basebackup</span></a> and <a href=\"/docs/17/app-pgreceivewal.html\" title=\"pg_receivewal\"><span>pg_receivewal</span></a> to use dbname in their connection specification (Jelte Fennema-Nio) <a href=\"https://postgr.es/c/cca97ce6a\">\u00a7</a></p>\n<p>This is useful for connection poolers that are sensitive to the database name.</p>", "text": "Allow pg_basebackup and pg_receivewal to use dbname in their connection specification (Jelte Fennema-Nio) \u00a7 This is useful for connection poolers that are sensitive to the database name.", "title": "Allow pg_basebackup and pg_receivewal to use dbname in their connection specification", "commits": ["cca97ce6a"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "4e6811fae28628c05efb289637958ce018fc9a8114cff89b29d602d888f740b1", "section_path": ["Server Applications"], "commit_groups": [["cca97ce6a"]], "identity_text": "Allow pg_basebackup and pg_receivewal to use dbname in their connection specification (Jelte Fennema-Nio) This is useful for connection poolers that are sensitive to the database name.", "commit_aliases": ["cca97ce6a"], "source_commits": ["cca97ce6a"], "source_entry_id": "17.0/changes/122", "db_id": "268281a16c5db7f57f2c0b6d9d6807d8", "patch_ids": ["b7c713bf4459c507781f24392f77d777"], "statement_hash": "0fb3f8d72c23fb88b1aa1b1207fff42015397df8eee0d64415e7c9d903b73234", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-aac8cd2db069e502", "migration": false}, {"id": "17.0-12297c59fa236017", "cves": [], "html": "<p>Add <a href=\"/docs/17/pgupgrade.html\" title=\"pg_upgrade\"><span>pg_upgrade</span></a> option <code>--copy-file-range</code> (Thomas Munro) <a href=\"https://postgr.es/c/d93627bcb\">\u00a7</a></p>\n<p>This is supported on <span>Linux</span> and <span>FreeBSD</span>.</p>", "text": "Add pg_upgrade option --copy-file-range (Thomas Munro) \u00a7 This is supported on Linux and FreeBSD.", "title": "Add pg_upgrade option --copy-file-range", "commits": ["d93627bcb"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "962dcd4ff0150d4d31960c278d8555a1487cd81282a4d228efeaebd361448276", "section_path": ["Server Applications"], "commit_groups": [["d93627bcb"]], "identity_text": "Add pg_upgrade option --copy-file-range (Thomas Munro) This is supported on Linux and FreeBSD.", "commit_aliases": ["d93627bcb"], "source_commits": ["d93627bcb"], "source_entry_id": "17.0/changes/123", "db_id": "d9eb158bf4232ae62487876af438c06d", "patch_ids": ["e3b451bd7f1062b048f221eb095d7fbe"], "statement_hash": "c36ff478955582e7fe6ea357a4490710a32eadf2bc24a85a1303eaf4756f4024", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-12297c59fa236017", "migration": false}, {"id": "17.0-76da5c5136327eb9", "cves": [], "html": "<p>Allow <a href=\"/docs/17/app-reindexdb.html\" title=\"reindexdb\"><span>reindexdb</span></a> <code>--index</code> to process indexes from different tables in parallel (Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov) <a href=\"https://postgr.es/c/47f99a407\">\u00a7</a></p>", "text": "Allow reindexdb --index to process indexes from different tables in parallel (Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov) \u00a7", "title": "Allow reindexdb --index to process indexes from different tables in parallel", "commits": ["47f99a407"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "19efd2508ff8388f3d7d9c9845a189c6ccb76da3e48d6daab301e4d1285bce2f", "section_path": ["Server Applications"], "commit_groups": [["47f99a407"]], "identity_text": "Allow reindexdb --index to process indexes from different tables in parallel (Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov)", "commit_aliases": ["47f99a407"], "source_commits": ["47f99a407"], "source_entry_id": "17.0/changes/124", "db_id": "0776c9ea52ffd9c02157b2f0809ba028", "patch_ids": ["28bfcb20ba62300331e0a36f918cae7e"], "statement_hash": "c66494bd2e04274838c5afdcd3573e9a45de801c0aa76670112c73e8bb956653", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-76da5c5136327eb9", "migration": false}, {"id": "17.0-728abf4e123ed6e4", "cves": [], "html": "<p>Allow <a href=\"/docs/17/app-reindexdb.html\" title=\"reindexdb\">reindexdb</a>, <a href=\"/docs/17/app-vacuumdb.html\" title=\"vacuumdb\">vacuumdb</a>, and <a href=\"/docs/17/app-clusterdb.html\" title=\"clusterdb\">clusterdb</a> to process objects in all databases matching a pattern (Nathan Bossart) <a href=\"https://postgr.es/c/24c928ad9\">\u00a7</a> <a href=\"https://postgr.es/c/648928c79\">\u00a7</a> <a href=\"https://postgr.es/c/1b49d56d3\">\u00a7</a></p>\n<p>The new option <code>--all</code> controls this behavior.</p>", "text": "Allow reindexdb, vacuumdb, and clusterdb to process objects in all databases matching a pattern (Nathan Bossart) \u00a7 \u00a7 \u00a7 The new option --all controls this behavior.", "title": "Allow reindexdb, vacuumdb, and clusterdb to process objects in all databases matching a pattern", "commits": ["1b49d56d3", "24c928ad9", "648928c79"], "section": "Server Applications", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SERVER-APPS", "source_hash": "5ea98d742f69f17e58536b1bfc7681fad738dba7a69c98c496b46f83a7250514", "section_path": ["Server Applications"], "commit_groups": [["1b49d56d3"], ["24c928ad9"], ["648928c79"]], "identity_text": "Allow reindexdb, vacuumdb, and clusterdb to process objects in all databases matching a pattern (Nathan Bossart) The new option --all controls this behavior.", "commit_aliases": ["1b49d56d3", "24c928ad9", "648928c79"], "source_commits": ["1b49d56d3", "24c928ad9", "648928c79"], "source_entry_id": "17.0/changes/125", "db_id": "d7c4b4af13cad8fc21fb707416814193", "patch_ids": ["749a7b012112b5be8b3472d52b0e5295", "7f350c546f239bf502c3caa964d420d2", "c09c04601275da0c67baf88657973e40"], "statement_hash": "5748536b79b3c28a70f0e46452935a4506292db1f62a618b48318f8725ae3f13", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-728abf4e123ed6e4", "migration": false}, {"id": "17.0-7d5e5a03a68a2fbd", "cves": [], "html": "<p>Remove support for <span>OpenSSL</span> 1.0.1 (Michael Paquier) <a href=\"https://postgr.es/c/8e278b657\">\u00a7</a></p>", "text": "Remove support for OpenSSL 1.0.1 (Michael Paquier) \u00a7", "title": "Remove support for OpenSSL 1.0.1", "commits": ["8e278b657"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "7e44f1fe34b165c7ebe8923f46994be66dd2b06293fa2dd9c4665be35958c0d9", "section_path": ["Source Code"], "commit_groups": [["8e278b657"]], "identity_text": "Remove support for OpenSSL 1.0.1 (Michael Paquier)", "commit_aliases": ["8e278b657"], "source_commits": ["8e278b657"], "source_entry_id": "17.0/changes/126", "db_id": "15880c76c3e7729f30f021b7f43fcc9a", "patch_ids": ["a5ad3055fd5c20cd11fdafa89115d124"], "statement_hash": "7e67783296f70fe16e14d5afa052aa466a00e45ac0785f565c674fdbb98cb79a", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-7d5e5a03a68a2fbd", "migration": false}, {"id": "17.0-811b45b188059ec1", "cves": [], "html": "<p>Allow tests to pass in <span>OpenSSL</span> <acronym>FIPS</acronym> mode (Peter Eisentraut) <a href=\"https://postgr.es/c/284cbaea7\">\u00a7</a> <a href=\"https://postgr.es/c/3c44e7d8d\">\u00a7</a></p>", "text": "Allow tests to pass in OpenSSL FIPS mode (Peter Eisentraut) \u00a7 \u00a7", "title": "Allow tests to pass in OpenSSL FIPS mode", "commits": ["284cbaea7", "3c44e7d8d"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "959f6399dda44f54bec76f7817e641068c40725031f832b87b6fa7e8504a0128", "section_path": ["Source Code"], "commit_groups": [["284cbaea7"], ["3c44e7d8d"]], "identity_text": "Allow tests to pass in OpenSSL FIPS mode (Peter Eisentraut)", "commit_aliases": ["284cbaea7", "3c44e7d8d"], "source_commits": ["284cbaea7", "3c44e7d8d"], "source_entry_id": "17.0/changes/127", "db_id": "a135f4fb35c7906e97c207b90bb26ab9", "patch_ids": ["27a23a56070ade180b93c4102d39aa9b", "789709d46dfe5351bc11694318517651"], "statement_hash": "c3cbba5e48f72814686215398317fdc78d97e033a969893d623bc5ec615958aa", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-811b45b188059ec1", "migration": false}, {"id": "17.0-bb4653681b5b6e14", "cves": [], "html": "<p>Use <acronym>CPU AVX</acronym>-512 instructions for bit counting (Paul Amonson, Nathan Bossart, Ants Aasma) <a href=\"https://postgr.es/c/792752af4\">\u00a7</a> <a href=\"https://postgr.es/c/41c51f0c6\">\u00a7</a></p>", "text": "Use CPU AVX-512 instructions for bit counting (Paul Amonson, Nathan Bossart, Ants Aasma) \u00a7 \u00a7", "title": "Use CPU AVX-512 instructions for bit counting", "commits": ["41c51f0c6", "792752af4"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "45cda86246e42712a462a54e5a683e75d514d046e2f6010a20d9ec242a413216", "section_path": ["Source Code"], "commit_groups": [["41c51f0c6"], ["792752af4"]], "identity_text": "Use CPU AVX-512 instructions for bit counting (Paul Amonson, Nathan Bossart, Ants Aasma)", "commit_aliases": ["41c51f0c6", "792752af4"], "source_commits": ["41c51f0c6", "792752af4"], "source_entry_id": "17.0/changes/128", "db_id": "326ef8392ee61620a3d0ab1e397c477b", "patch_ids": ["797825bf52ab1ddd6d748e9df6e04632", "de087c782c5665286971401f760dcb6f"], "statement_hash": "2a9647601d42364819fca9d36293b39dd2ddf93995d9e2b4d68b42b379124bdf", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-bb4653681b5b6e14", "migration": false}, {"id": "17.0-e3069405017dc5b6", "cves": [], "html": "<p>Require <span><acronym>LLVM</acronym></span> version 10 or later (Thomas Munro) <a href=\"https://postgr.es/c/820b5af73\">\u00a7</a></p>", "text": "Require LLVM version 10 or later (Thomas Munro) \u00a7", "title": "Require LLVM version 10 or later", "commits": ["820b5af73"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "fabeefc089e24f4a3c12c459dab4138165912759268b17a27c98575b1b7952b1", "section_path": ["Source Code"], "commit_groups": [["820b5af73"]], "identity_text": "Require LLVM version 10 or later (Thomas Munro)", "commit_aliases": ["820b5af73"], "source_commits": ["820b5af73"], "source_entry_id": "17.0/changes/129", "db_id": "72eee7416e63a4bcb16849b9e21c657e", "patch_ids": ["baa483078b0978ee35a1076715b8bab0"], "statement_hash": "bc510a4a245912e1390d02ffb70b8a64616e38b63a8092f3ce6c78293ceac58c", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-e3069405017dc5b6", "migration": false}, {"id": "17.0-22ff87c5914347cf", "cves": [], "html": "<p>Use native <acronym>CRC</acronym> instructions on 64-bit <span>LoongArch</span> CPUs (Xudong Yang) <a href=\"https://postgr.es/c/4d14ccd6a\">\u00a7</a></p>", "text": "Use native CRC instructions on 64-bit LoongArch CPUs (Xudong Yang) \u00a7", "title": "Use native CRC instructions on 64-bit LoongArch CPUs", "commits": ["4d14ccd6a"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "b24d213afc567210c77934ede0a5ef95aaf687bce473cf1813bd9c9c9b1a2a5f", "section_path": ["Source Code"], "commit_groups": [["4d14ccd6a"]], "identity_text": "Use native CRC instructions on 64-bit LoongArch CPUs (Xudong Yang)", "commit_aliases": ["4d14ccd6a"], "source_commits": ["4d14ccd6a"], "source_entry_id": "17.0/changes/130", "db_id": "7ea245e9c033fe8b075904f92a913e12", "patch_ids": ["aed8d765ef17f0d03df77dab0ec16518"], "statement_hash": "ff8157f877083a7f8679d72b455b383d8cb83ecb25761d068c3fc97919ca6eda", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-22ff87c5914347cf", "migration": false}, {"id": "17.0-c5f8f949a667391e", "cves": [], "html": "<p>Remove <span><acronym>AIX</acronym></span> support (Heikki Linnakangas) <a href=\"https://postgr.es/c/0b16bb877\">\u00a7</a></p>", "text": "Remove AIX support (Heikki Linnakangas) \u00a7", "title": "Remove AIX support", "commits": ["0b16bb877"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "5841f180a5041cf50a274e1f9fd698322aafb08ae8fa8da1e59d66844ea73305", "section_path": ["Source Code"], "commit_groups": [["0b16bb877"]], "identity_text": "Remove AIX support (Heikki Linnakangas)", "commit_aliases": ["0b16bb877"], "source_commits": ["0b16bb877"], "source_entry_id": "17.0/changes/131", "db_id": "f4840b20dc32c3b9f047dd82de33efb9", "patch_ids": ["de2c7811e07614defe533d1bf93a3090"], "statement_hash": "0e3d50f0888d20c3ac42aba16cf6e299c1b83550abd1fa2f6110c4367a8eb7ac", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-c5f8f949a667391e", "migration": false}, {"id": "17.0-ae00e15fc059b1d1", "cves": [], "html": "<p>Remove the <span>Microsoft Visual Studio</span>-specific <span>PostgreSQL</span> build option (Michael Paquier) <a href=\"https://postgr.es/c/1301c80b2\">\u00a7</a></p>\n<p><span>Meson</span> is now the only available method for <span>Visual Studio</span> builds.</p>", "text": "Remove the Microsoft Visual Studio-specific PostgreSQL build option (Michael Paquier) \u00a7 Meson is now the only available method for Visual Studio builds.", "title": "Remove the Microsoft Visual Studio-specific PostgreSQL build option", "commits": ["1301c80b2"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "987f3c37a3e15e3e1b2cb19b584c749b0a70b49ac562e91f45a7c7298f7ae16b", "section_path": ["Source Code"], "commit_groups": [["1301c80b2"]], "identity_text": "Remove the Microsoft Visual Studio-specific PostgreSQL build option (Michael Paquier) Meson is now the only available method for Visual Studio builds.", "commit_aliases": ["1301c80b2"], "source_commits": ["1301c80b2"], "source_entry_id": "17.0/changes/132", "db_id": "913c5fefc2c5e537af5898076b56e56d", "patch_ids": ["6e75731134cc82e8f61c2df316928cf7"], "statement_hash": "a2c8190c49c3b8cb801ae88e65a9613c2c1609d3a9a58ae454c3dd9193be9367", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-ae00e15fc059b1d1", "migration": false}, {"id": "17.0-8c01ebc166174554", "cves": [], "html": "<p>Remove configure option <code>--disable-thread-safety</code> (Thomas Munro, Heikki Linnakangas) <a href=\"https://postgr.es/c/68a4b58ec\">\u00a7</a> <a href=\"https://postgr.es/c/ce0b0fa3e\">\u00a7</a></p>\n<p>We now assume all supported platforms have sufficient thread support.</p>", "text": "Remove configure option --disable-thread-safety (Thomas Munro, Heikki Linnakangas) \u00a7 \u00a7 We now assume all supported platforms have sufficient thread support.", "title": "Remove configure option --disable-thread-safety", "commits": ["68a4b58ec", "ce0b0fa3e"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "2c40ba40d696bf2ee743f2efa7d58b56cc5a38cff1611a62d4cfedfa7163904f", "section_path": ["Source Code"], "commit_groups": [["68a4b58ec"], ["ce0b0fa3e"]], "identity_text": "Remove configure option --disable-thread-safety (Thomas Munro, Heikki Linnakangas) We now assume all supported platforms have sufficient thread support.", "commit_aliases": ["68a4b58ec", "ce0b0fa3e"], "source_commits": ["68a4b58ec", "ce0b0fa3e"], "source_entry_id": "17.0/changes/133", "db_id": "42e9fb2f361ae69f03f41e8114726ed6", "patch_ids": ["36537238f32d9a7bb09808780a5910de", "50964d12e5d1abbad098eb65bd55c133"], "statement_hash": "a7d2a76c0b3c298d869b8d9dbecc0cff3c0985357e98da13117747645d02575a", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-8c01ebc166174554", "migration": false}, {"id": "17.0-114f7cf4ea3ab9b8", "cves": [], "html": "<p>Remove <span>configure</span> option <code>--with-CC</code> (Heikki Linnakangas) <a href=\"https://postgr.es/c/1c1eec0f2\">\u00a7</a></p>\n<p>Setting the <code>CC</code> environment variable is now the only supported method for specifying the compiler.</p>", "text": "Remove configure option --with-CC (Heikki Linnakangas) \u00a7 Setting the CC environment variable is now the only supported method for specifying the compiler.", "title": "Remove configure option --with-CC", "commits": ["1c1eec0f2"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "d95dbe422cc4b30443e33ef408727f4dac473726b6a3a6230eb2620223f29622", "section_path": ["Source Code"], "commit_groups": [["1c1eec0f2"]], "identity_text": "Remove configure option --with-CC (Heikki Linnakangas) Setting the CC environment variable is now the only supported method for specifying the compiler.", "commit_aliases": ["1c1eec0f2"], "source_commits": ["1c1eec0f2"], "source_entry_id": "17.0/changes/134", "db_id": "143ea66288ccbf63707e044df80c9ad6", "patch_ids": ["7e98f7d00edb150581c9e82e62d11be0"], "statement_hash": "2cb754acc6c28932f79d5bc3d331a21391776e24922e5dacd5d5960d95a1cb33", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-114f7cf4ea3ab9b8", "migration": false}, {"id": "17.0-06f550612dc790e8", "cves": [], "html": "<p>User-defined data type receive functions will no longer receive their data null-terminated (David Rowley) <a href=\"https://postgr.es/c/f0efa5aec\">\u00a7</a></p>", "text": "User-defined data type receive functions will no longer receive their data null-terminated (David Rowley) \u00a7", "title": "User-defined data type receive functions will no longer receive their data null-terminated", "commits": ["f0efa5aec"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "83baab6057f34f99e4db488768cb432760dba78c093f4d1620e620abd2683c28", "section_path": ["Source Code"], "commit_groups": [["f0efa5aec"]], "identity_text": "User-defined data type receive functions will no longer receive their data null-terminated (David Rowley)", "commit_aliases": ["f0efa5aec"], "source_commits": ["f0efa5aec"], "source_entry_id": "17.0/changes/135", "db_id": "19d0f5adfeea701c31b8e22525e6fad2", "patch_ids": ["6b82f3e7159caf6a3bfa7b3269e4a5d8"], "statement_hash": "24812cf4b627a7a7f317c84d2e00b69d5d0fd88d2fda6b1a6181d0390567ab8b", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-06f550612dc790e8", "migration": false}, {"id": "17.0-54d4d6a1ba72f505", "cves": [], "html": "<p>Add incremental <code>JSON</code> parser for use with huge <code>JSON</code> documents (Andrew Dunstan) <a href=\"https://postgr.es/c/3311ea86e\">\u00a7</a></p>", "text": "Add incremental JSON parser for use with huge JSON documents (Andrew Dunstan) \u00a7", "title": "Add incremental JSON parser for use with huge JSON documents", "commits": ["3311ea86e"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "5873b1f249baebe7b7426d1b9ee4cb0e4c3bf69aca662d372c98a79072c9131e", "section_path": ["Source Code"], "commit_groups": [["3311ea86e"]], "identity_text": "Add incremental JSON parser for use with huge JSON documents (Andrew Dunstan)", "commit_aliases": ["3311ea86e"], "source_commits": ["3311ea86e"], "source_entry_id": "17.0/changes/136", "db_id": "019541f2e3f2021f9da6a24500d7182b", "patch_ids": ["2cbbd6ee4e3a4c628d75f3c25057b54f"], "statement_hash": "ddddb8565374e9a832c7ea9a2dc932e14bf0da6c2914474639e77911dd4e7523", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-54d4d6a1ba72f505", "migration": false}, {"id": "17.0-57e13f2a0c8bc01d", "cves": [], "html": "<p>Convert top-level <code>README</code> file to <span>Markdown</span> (Nathan Bossart) <a href=\"https://postgr.es/c/363eb0599\">\u00a7</a></p>", "text": "Convert top-level README file to Markdown (Nathan Bossart) \u00a7", "title": "Convert top-level README file to Markdown", "commits": ["363eb0599"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "097e0892fe4a698341b7504a391033efd56aef053f3e70f9997902cb071eb1d5", "section_path": ["Source Code"], "commit_groups": [["363eb0599"]], "identity_text": "Convert top-level README file to Markdown (Nathan Bossart)", "commit_aliases": ["363eb0599"], "source_commits": ["363eb0599"], "source_entry_id": "17.0/changes/137", "db_id": "16fe37ee9bc09439954284db0c23d26c", "patch_ids": ["78c6b6fc4a88360bc43a03406176a1f1"], "statement_hash": "94273fdf864232478f3e27128fad502df5e5acab604b948733ad710110dae971", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-57e13f2a0c8bc01d", "migration": false}, {"id": "17.0-36a5539106a2d713", "cves": [], "html": "<p>Remove no longer needed top-level <code>INSTALL</code> file (Tom Lane) <a href=\"https://postgr.es/c/e2b73f4a4\">\u00a7</a></p>", "text": "Remove no longer needed top-level INSTALL file (Tom Lane) \u00a7", "title": "Remove no longer needed top-level INSTALL file", "commits": ["e2b73f4a4"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "6166d3146ccb98d090223b85adff0250ef2e889ef1e3b69f19f79119da452725", "section_path": ["Source Code"], "commit_groups": [["e2b73f4a4"]], "identity_text": "Remove no longer needed top-level INSTALL file (Tom Lane)", "commit_aliases": ["e2b73f4a4"], "source_commits": ["e2b73f4a4"], "source_entry_id": "17.0/changes/138", "db_id": "fd4c39a1596258c7e0dd1558e77e4391", "patch_ids": ["b1e4e1b6cf4abd002cee1318af0191b0"], "statement_hash": "a43e44e9c5e60b1187431df61de5c9dfae8e42b272e82cf7e0ac3786de2ec5e3", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-36a5539106a2d713", "migration": false}, {"id": "17.0-41672ed7e59b1357", "cves": [], "html": "<p>Remove <span>make</span>'s <code>distprep</code> option (Peter Eisentraut) <a href=\"https://postgr.es/c/721856ff2\">\u00a7</a></p>", "text": "Remove make's distprep option (Peter Eisentraut) \u00a7", "title": "Remove make's distprep option", "commits": ["721856ff2"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "e279dd987a80bb20f15a3e6f3c37a0ff8fc1a65148153b85ae5303def96a1663", "section_path": ["Source Code"], "commit_groups": [["721856ff2"]], "identity_text": "Remove make's distprep option (Peter Eisentraut)", "commit_aliases": ["721856ff2"], "source_commits": ["721856ff2"], "source_entry_id": "17.0/changes/139", "db_id": "044abf4589a4c75e032d01967bfeb006", "patch_ids": ["a2127535e57564bc451f6f84f53c5799"], "statement_hash": "b660c155b2c6b26c23d07d60f5eab3d2829df09314527cb5f6509312fa611c96", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-41672ed7e59b1357", "migration": false}, {"id": "17.0-59947fbea7dda5fd", "cves": [], "html": "<p>Add <span>make</span> support for <span>Android</span> shared libraries (Peter Eisentraut) <a href=\"https://postgr.es/c/79b03dbb3\">\u00a7</a></p>", "text": "Add make support for Android shared libraries (Peter Eisentraut) \u00a7", "title": "Add make support for Android shared libraries", "commits": ["79b03dbb3"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "c3cdbab64bcba9765ee387b35484548fd70f7dde0b8554a2c772ff1a542f4c93", "section_path": ["Source Code"], "commit_groups": [["79b03dbb3"]], "identity_text": "Add make support for Android shared libraries (Peter Eisentraut)", "commit_aliases": ["79b03dbb3"], "source_commits": ["79b03dbb3"], "source_entry_id": "17.0/changes/140", "db_id": "b13e641ad6d53b97d02e6d3d3b07c68f", "patch_ids": ["fa62aee2e0aab2024628c6430f6233f8"], "statement_hash": "b608dc60bda89d6268229b9def92c090148bdbeb107de5d8b0b702e03115530c", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-59947fbea7dda5fd", "migration": false}, {"id": "17.0-3b42ac86e2913539", "cves": [], "html": "<p>Add backend support for injection points (Michael Paquier) <a href=\"https://postgr.es/c/d86d20f0b\">\u00a7</a> <a href=\"https://postgr.es/c/37b369dc6\">\u00a7</a> <a href=\"https://postgr.es/c/f587338de\">\u00a7</a> <a href=\"https://postgr.es/c/bb93640a6\">\u00a7</a></p>\n<p>This is used for server debugging and they must be enabled at server compile time.</p>", "text": "Add backend support for injection points (Michael Paquier) \u00a7 \u00a7 \u00a7 \u00a7 This is used for server debugging and they must be enabled at server compile time.", "title": "Add backend support for injection points", "commits": ["37b369dc6", "bb93640a6", "d86d20f0b", "f587338de"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "d73fb629fc7f4b2ed93b13e455a0433f40e2386e2790224bfa3043abec807ac4", "section_path": ["Source Code"], "commit_groups": [["37b369dc6"], ["bb93640a6"], ["d86d20f0b"], ["f587338de"]], "identity_text": "Add backend support for injection points (Michael Paquier) This is used for server debugging and they must be enabled at server compile time.", "commit_aliases": ["37b369dc6", "bb93640a6", "d86d20f0b", "f587338de"], "source_commits": ["37b369dc6", "bb93640a6", "d86d20f0b", "f587338de"], "source_entry_id": "17.0/changes/141", "db_id": "e75a9a23e2348482eff198030b472f0e", "patch_ids": ["0873e7b8344960a2aee60a48bee2194e", "4796ea611cbe705f67adb3528e0f5b11", "caa959fbfcefd2de2cb9e4dcf8981841", "f55703cb1ff5c35f0cd1165772407317"], "statement_hash": "d5d0072341b44815f49a413e883adc199119d202250d83568629a792d6b2e24e", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-3b42ac86e2913539", "migration": false}, {"id": "17.0-68a8c9201da28ca4", "cves": [], "html": "<p>Add dynamic shared memory registry (Nathan Bossart) <a href=\"https://postgr.es/c/8b2bcf3f2\">\u00a7</a></p>\n<p>This allows shared libraries which are not initialized at startup to coordinate dynamic shared memory access.</p>", "text": "Add dynamic shared memory registry (Nathan Bossart) \u00a7 This allows shared libraries which are not initialized at startup to coordinate dynamic shared memory access.", "title": "Add dynamic shared memory registry", "commits": ["8b2bcf3f2"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "7973e9c417d977667928cc28fdc2120634a2839d8f60c586af619727b1a67281", "section_path": ["Source Code"], "commit_groups": [["8b2bcf3f2"]], "identity_text": "Add dynamic shared memory registry (Nathan Bossart) This allows shared libraries which are not initialized at startup to coordinate dynamic shared memory access.", "commit_aliases": ["8b2bcf3f2"], "source_commits": ["8b2bcf3f2"], "source_entry_id": "17.0/changes/142", "db_id": "c5316f39fd5729475b6bb8ac9bcb82cd", "patch_ids": ["e00bd8d7f257fd3730d3a711e4315f46"], "statement_hash": "5fa223044d973d2145d53255450dcc74827b5e1c458ad518195e0a6a328090c5", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-68a8c9201da28ca4", "migration": false}, {"id": "17.0-a10b234e69e97675", "cves": [], "html": "<p>Fix <code>emit_log_hook</code> to use the same time value as other log records for the same query (Kambam Vinay, Michael Paquier) <a href=\"https://postgr.es/c/2a217c371\">\u00a7</a></p>", "text": "Fix emit_log_hook to use the same time value as other log records for the same query (Kambam Vinay, Michael Paquier) \u00a7", "title": "Fix emit_log_hook to use the same time value as other log records for the same query", "commits": ["2a217c371"], "section": "Source Code", "category": "bugfix", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "f42bef9789ddc4e7eb837c73c4b61fa5b8f1841fad1f52ece9b6fc74944327ad", "section_path": ["Source Code"], "commit_groups": [["2a217c371"]], "identity_text": "Fix emit_log_hook to use the same time value as other log records for the same query (Kambam Vinay, Michael Paquier)", "commit_aliases": ["2a217c371"], "source_commits": ["2a217c371"], "source_entry_id": "17.0/changes/143", "db_id": "96896e827fdb47d395edc2e3b8c4a934", "patch_ids": ["82c0b254fcf4409e51d539c22a6b8cf2"], "statement_hash": "882e8a0f6fac1a739aea9a40ccee25d6d89c28cf47b64f68de68183a8bfe3fbd", "relations": [], "category_label": "Bug fixes", "url": "/docs/compare/?release=17.0#17.0-a10b234e69e97675", "migration": false}, {"id": "17.0-95f257bd15ae2023", "cves": [], "html": "<p>Improve documentation for using <code>jsonpath</code> for predicate checks (David Wheeler) <a href=\"https://postgr.es/c/7014c9a4b\">\u00a7</a></p>", "text": "Improve documentation for using jsonpath for predicate checks (David Wheeler) \u00a7", "title": "Improve documentation for using jsonpath for predicate checks", "commits": ["7014c9a4b"], "section": "Source Code", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-SOURCE-CODE", "source_hash": "917d48df4a3e2aaa0eb690c94f5195f2c5c35b9d75b35f56bf63522433584aa4", "section_path": ["Source Code"], "commit_groups": [["7014c9a4b"]], "identity_text": "Improve documentation for using jsonpath for predicate checks (David Wheeler)", "commit_aliases": ["7014c9a4b"], "source_commits": ["7014c9a4b"], "source_entry_id": "17.0/changes/144", "db_id": "671cfd4d77d6dc423a470d85daeb1533", "patch_ids": ["378142bba840712753071ce7149f892c"], "statement_hash": "bd74d3f3a12cdf95c6426e5e24eceb582d94b3ab8e7d610f388b821b476efb1c", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-95f257bd15ae2023", "migration": false}, {"id": "17.0-4ee7bb0a07d38410", "cves": [], "html": "<p>Allow joins with non-join qualifications to be pushed down to foreign servers and custom scans (Richard Guo, Etsuro Fujita) <a href=\"https://postgr.es/c/9e9931d2b\">\u00a7</a></p>\n<p>Foreign data wrappers and custom scans will need to be modified to handle these cases.</p>", "text": "Allow joins with non-join qualifications to be pushed down to foreign servers and custom scans (Richard Guo, Etsuro Fujita) \u00a7 Foreign data wrappers and custom scans will need to be modified to handle these cases.", "title": "Allow joins with non-join qualifications to be pushed down to foreign servers and custom scans", "commits": ["9e9931d2b"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "90b0331f7787b3811b14cca6d244c14bf435769131dd5f970a146404d370defa", "section_path": ["Additional Modules"], "commit_groups": [["9e9931d2b"]], "identity_text": "Allow joins with non-join qualifications to be pushed down to foreign servers and custom scans (Richard Guo, Etsuro Fujita) Foreign data wrappers and custom scans will need to be modified to handle these cases.", "commit_aliases": ["9e9931d2b"], "source_commits": ["9e9931d2b"], "source_entry_id": "17.0/changes/145", "db_id": "602370a8e6f22b00d8b169c31ac92c51", "patch_ids": ["fa2badd8ad71f4912f69362e47f47050"], "statement_hash": "532e397bc4b9ae95eb4b1cac0ae38f563f22359b43b0ed380e7d93423bfc8f47", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-4ee7bb0a07d38410", "migration": false}, {"id": "17.0-fe103be5475b6d9c", "cves": [], "html": "<p>Allow pushdown of <code>EXISTS</code> and <code>IN</code> subqueries to <a href=\"/docs/17/postgres-fdw.html\" title=\"F.36.\u00a0postgres_fdw \u2014 access data stored in external PostgreSQL servers\">postgres_fdw</a> foreign servers (Alexander Pyhalov) <a href=\"https://postgr.es/c/824dbea3e\">\u00a7</a></p>", "text": "Allow pushdown of EXISTS and IN subqueries to postgres_fdw foreign servers (Alexander Pyhalov) \u00a7", "title": "Allow pushdown of EXISTS and IN subqueries to postgres_fdw foreign servers", "commits": ["824dbea3e"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "5ec6b1f8e99d7958930bbbae13f623d3b269b51c64e026a231117b812f4104df", "section_path": ["Additional Modules"], "commit_groups": [["824dbea3e"]], "identity_text": "Allow pushdown of EXISTS and IN subqueries to postgres-fdw foreign servers (Alexander Pyhalov)", "commit_aliases": ["824dbea3e"], "source_commits": ["824dbea3e"], "source_entry_id": "17.0/changes/146", "db_id": "7a3f28e9806d19d8460db56a25188a6b", "patch_ids": ["4c6c6dbde603026434419ffb07dff549"], "statement_hash": "fd127259ef3624c6e64b5ed145e3b39227521cd4cfcdaf0d5a755959571bb809", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-fe103be5475b6d9c", "migration": false}, {"id": "17.0-cfc98b47a375f5f9", "cves": [], "html": "<p>Increase the default foreign data wrapper tuple cost (David Rowley, Umair Shahid) <a href=\"https://postgr.es/c/cac169d68\">\u00a7</a> <a href=\"https://postgr.es/c/f7f694b21\">\u00a7</a></p>\n<p>This value is used by the optimizer.</p>", "text": "Increase the default foreign data wrapper tuple cost (David Rowley, Umair Shahid) \u00a7 \u00a7 This value is used by the optimizer.", "title": "Increase the default foreign data wrapper tuple cost", "commits": ["cac169d68", "f7f694b21"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "b72bdd8aa977a12b63e5763b222efdebb7baabb4f926a57d2e94ff919456bda8", "section_path": ["Additional Modules"], "commit_groups": [["cac169d68"], ["f7f694b21"]], "identity_text": "Increase the default foreign data wrapper tuple cost (David Rowley, Umair Shahid) This value is used by the optimizer.", "commit_aliases": ["cac169d68", "f7f694b21"], "source_commits": ["cac169d68", "f7f694b21"], "source_entry_id": "17.0/changes/147", "db_id": "76f362f84f6f7f42131c7dc3660710f3", "patch_ids": ["11934dd9267f219b5187d05144d80710", "e0d966edc0bfb9957736dd9b41557265"], "statement_hash": "924c645b841c23c66da984f6da1bc2438b270e1c903201191ef9958088fe599d", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-cfc98b47a375f5f9", "migration": false}, {"id": "17.0-f5dbc86e63d3126a", "cves": [], "html": "<p>Allow <a href=\"/docs/17/dblink.html\" title=\"F.11.\u00a0dblink \u2014 connect to other PostgreSQL databases\"><span>dblink</span></a> database operations to be interrupted (Noah Misch) <a href=\"https://postgr.es/c/d3c5f37dd\">\u00a7</a></p>", "text": "Allow dblink database operations to be interrupted (Noah Misch) \u00a7", "title": "Allow dblink database operations to be interrupted", "commits": ["d3c5f37dd"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "14050614fc744646952c5710d1d85b92f8421c7c466422b8fa867ba67cfeabbc", "section_path": ["Additional Modules"], "commit_groups": [["d3c5f37dd"]], "identity_text": "Allow dblink database operations to be interrupted (Noah Misch)", "commit_aliases": ["d3c5f37dd"], "source_commits": ["d3c5f37dd"], "source_entry_id": "17.0/changes/148", "db_id": "0e31dead73a9f8e498071f9525ac49a6", "patch_ids": ["2f9e7d71050455b05ec5e7c18af39bcc"], "statement_hash": "13ea52e38638c9d65409e2d059873b618bfad8b134d7c35409391c6eed91fb0e", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-f5dbc86e63d3126a", "migration": false}, {"id": "17.0-6f4fc92b0cf2f6ff", "cves": [], "html": "<p>Allow the creation of hash indexes on <span><a href=\"/docs/17/ltree.html\" title=\"F.22.\u00a0ltree \u2014 hierarchical tree-like data type\">ltree</a></span> columns (Tommy Pavlicek) <a href=\"https://postgr.es/c/485f0aa85\">\u00a7</a></p>\n<p>This also enables hash join and hash aggregation on <span>ltree</span> columns.</p>", "text": "Allow the creation of hash indexes on ltree columns (Tommy Pavlicek) \u00a7 This also enables hash join and hash aggregation on ltree columns.", "title": "Allow the creation of hash indexes on ltree columns", "commits": ["485f0aa85"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "90fb4a30d48d077a56d56afbc21845e659a494f255b6f74487cd4ec9a5f648ed", "section_path": ["Additional Modules"], "commit_groups": [["485f0aa85"]], "identity_text": "Allow the creation of hash indexes on ltree columns (Tommy Pavlicek) This also enables hash join and hash aggregation on ltree columns.", "commit_aliases": ["485f0aa85"], "source_commits": ["485f0aa85"], "source_entry_id": "17.0/changes/149", "db_id": "0fcd097972303bafdda7763698cf849d", "patch_ids": ["9a2b84416f651f19ea2147bbbe22ed42"], "statement_hash": "2ff06487c7f977a34b9e12883d8baa57125e4609fab6ad7cecd0d93fde55cb3b", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-6f4fc92b0cf2f6ff", "migration": false}, {"id": "17.0-0afa950a1f75fae1", "cves": [], "html": "<p>Allow <span><a href=\"/docs/17/unaccent.html\" title=\"F.46.\u00a0unaccent \u2014 a text search dictionary which removes diacritics\">unaccent</a></span> character translation rules to contain whitespace and quotes (Michael Paquier) <a href=\"https://postgr.es/c/59f47fb98\">\u00a7</a></p>\n<p>The syntax for the <code>unaccent.rules</code> file has changed.</p>", "text": "Allow unaccent character translation rules to contain whitespace and quotes (Michael Paquier) \u00a7 The syntax for the unaccent.rules file has changed.", "title": "Allow unaccent character translation rules to contain whitespace and quotes", "commits": ["59f47fb98"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "43e706578a3b5a9be257ce12defe01320b816965750a56a6766aaa962c2e4377", "section_path": ["Additional Modules"], "commit_groups": [["59f47fb98"]], "identity_text": "Allow unaccent character translation rules to contain whitespace and quotes (Michael Paquier) The syntax for the unaccent.rules file has changed.", "commit_aliases": ["59f47fb98"], "source_commits": ["59f47fb98"], "source_entry_id": "17.0/changes/150", "db_id": "931e088d46958c6478eb7d2f30c51887", "patch_ids": ["bd31157f2a7afdf08a60d3946fd8d008"], "statement_hash": "c3082f051a4a8eeb36497acdbe5ba3a49fe0701fd780b4f9fccba48025a091af", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-0afa950a1f75fae1", "migration": false}, {"id": "17.0-d5695e3bf3606f41", "cves": [], "html": "<p>Allow <span><a href=\"/docs/17/amcheck.html\" title=\"F.1.\u00a0amcheck \u2014 tools to verify table and index consistency\">amcheck</a></span> to check for unique constraint violations using new option <code>--checkunique</code> (Anastasia Lubennikova, Pavel Borisov, Maxim Orlov) <a href=\"https://postgr.es/c/5ae208720\">\u00a7</a></p>", "text": "Allow amcheck to check for unique constraint violations using new option --checkunique (Anastasia Lubennikova, Pavel Borisov, Maxim Orlov) \u00a7", "title": "Allow amcheck to check for unique constraint violations using new option --checkunique", "commits": ["5ae208720"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "cdfbcd3008f1d07349161bbaf954fe0e6bfec5792669bee987b15382321f3744", "section_path": ["Additional Modules"], "commit_groups": [["5ae208720"]], "identity_text": "Allow amcheck to check for unique constraint violations using new option --checkunique (Anastasia Lubennikova, Pavel Borisov, Maxim Orlov)", "commit_aliases": ["5ae208720"], "source_commits": ["5ae208720"], "source_entry_id": "17.0/changes/151", "db_id": "2eddc8ab5f67ad39560cadf774fa268a", "patch_ids": ["5050adf66866d77bc15d0a59087af2f3"], "statement_hash": "c86fe5631c56eb258fd536f2567f63d1ecd4b20c8865fd419789aba61f6f66c1", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-d5695e3bf3606f41", "migration": false}, {"id": "17.0-04caacc554fbc62d", "cves": [], "html": "<p>Allow <span><a href=\"/docs/17/citext.html\" title=\"F.9.\u00a0citext \u2014 a case-insensitive character string type\">citext</a></span> tests to pass in OpenSSL <acronym>FIPS</acronym> mode (Peter Eisentraut) <a href=\"https://postgr.es/c/3c551ebed\">\u00a7</a></p>", "text": "Allow citext tests to pass in OpenSSL FIPS mode (Peter Eisentraut) \u00a7", "title": "Allow citext tests to pass in OpenSSL FIPS mode", "commits": ["3c551ebed"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "ae7e08b05987732a2bfeccd8963683628531014ec419a7d0016723c8b800edad", "section_path": ["Additional Modules"], "commit_groups": [["3c551ebed"]], "identity_text": "Allow citext tests to pass in OpenSSL FIPS mode (Peter Eisentraut)", "commit_aliases": ["3c551ebed"], "source_commits": ["3c551ebed"], "source_entry_id": "17.0/changes/152", "db_id": "d4df432082891f8eedc5722ec92c4cf3", "patch_ids": ["e7858ef4fe4eec42ceaeb0d73e09397b"], "statement_hash": "633b209b121df3f7a1b3866423fe949c44297e36eaa76eb7a421268ee00950bf", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-04caacc554fbc62d", "migration": false}, {"id": "17.0-10ea33a7a901c67a", "cves": [], "html": "<p>Allow <span><a href=\"/docs/17/pgcrypto.html\" title=\"F.26.\u00a0pgcrypto \u2014 cryptographic functions\">pgcrypto</a></span> tests to pass in OpenSSL <acronym>FIPS</acronym> mode (Peter Eisentraut) <a href=\"https://postgr.es/c/795592865\">\u00a7</a></p>", "text": "Allow pgcrypto tests to pass in OpenSSL FIPS mode (Peter Eisentraut) \u00a7", "title": "Allow pgcrypto tests to pass in OpenSSL FIPS mode", "commits": ["795592865"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "bfa7242196ca8f07fddc2d907ac32183f7e1924f168cea723e5030b91bf0cb01", "section_path": ["Additional Modules"], "commit_groups": [["795592865"]], "identity_text": "Allow pgcrypto tests to pass in OpenSSL FIPS mode (Peter Eisentraut)", "commit_aliases": ["795592865"], "source_commits": ["795592865"], "source_entry_id": "17.0/changes/153", "db_id": "76a6f403888ab03b534bce8c3f9d7249", "patch_ids": ["08761b8e5c59750f736a18305612fd1c"], "statement_hash": "f531e471fa3af9c32a7d13871ca045c429ac9b29a2b80f11eebee0c789094d00", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-10ea33a7a901c67a", "migration": false}, {"id": "17.0-ff3c8a0bfa06d012", "cves": [], "html": "<p>Remove some unused <a href=\"/docs/17/spi.html\" title=\"Chapter\u00a045.\u00a0Server Programming Interface\"><acronym>SPI</acronym></a> macros (Bharath Rupireddy) <a href=\"https://postgr.es/c/75680c3d8\">\u00a7</a></p>", "text": "Remove some unused SPI macros (Bharath Rupireddy) \u00a7", "title": "Remove some unused SPI macros", "commits": ["75680c3d8"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "32667365507ac2e744afee032cf8e3036c1d483ae7d3da7b1b9b9d4c2c0f8083", "section_path": ["Additional Modules"], "commit_groups": [["75680c3d8"]], "identity_text": "Remove some unused SPI macros (Bharath Rupireddy)", "commit_aliases": ["75680c3d8"], "source_commits": ["75680c3d8"], "source_entry_id": "17.0/changes/154", "db_id": "85f03f7e098e7244c189f0de6da4683f", "patch_ids": ["8eb02210c953013409d5689d896ae0e9"], "statement_hash": "f3d1a646d47946f1e78824bc03ada29979b7403151fa61c3ea5272d498053d75", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-ff3c8a0bfa06d012", "migration": false}, {"id": "17.0-5fc36472b4e20768", "cves": [], "html": "<p>Allow <a href=\"/docs/17/sql-alteroperator.html\" title=\"ALTER OPERATOR\"><code>ALTER OPERATOR</code></a> to set more optimization attributes (Tommy Pavlicek) <a href=\"https://postgr.es/c/2b5154bea\">\u00a7</a></p>\n<p>This is useful for extensions.</p>", "text": "Allow ALTER OPERATOR to set more optimization attributes (Tommy Pavlicek) \u00a7 This is useful for extensions.", "title": "Allow ALTER OPERATOR to set more optimization attributes", "commits": ["2b5154bea"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "147eff46f4e56400f3e7013a5fcd6170a1e254db439cb2e6040367f7767d5105", "section_path": ["Additional Modules"], "commit_groups": [["2b5154bea"]], "identity_text": "Allow ALTER OPERATOR to set more optimization attributes (Tommy Pavlicek) This is useful for extensions.", "commit_aliases": ["2b5154bea"], "source_commits": ["2b5154bea"], "source_entry_id": "17.0/changes/155", "db_id": "f77fab23da18005f8e03d14d7c6c5b7a", "patch_ids": ["83b25dff27e72215ff6388400399430e"], "statement_hash": "5369619e8fafe7aab9c1a1d35d794b1c2d2f6e8a6f88922a3229d202113d0c5f", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-5fc36472b4e20768", "migration": false}, {"id": "17.0-83672323a9b6d2b5", "cves": [], "html": "<p>Allow extensions to define <a href=\"/docs/17/xfunc-c.html#XFUNC-ADDIN-WAIT-EVENTS\" title=\"36.10.12.\u00a0Custom Wait Events\">custom wait events</a> (Masahiro Ikeda) <a href=\"https://postgr.es/c/c9af05465\">\u00a7</a> <a href=\"https://postgr.es/c/c8e318b1b\">\u00a7</a> <a href=\"https://postgr.es/c/d61f2538a\">\u00a7</a> <a href=\"https://postgr.es/c/c789f0f6c\">\u00a7</a></p>\n<p>Custom wait events have been added to <span><a href=\"/docs/17/postgres-fdw.html\" title=\"F.36.\u00a0postgres_fdw \u2014 access data stored in external PostgreSQL servers\">postgres_fdw</a></span> and <span><a href=\"/docs/17/dblink.html\" title=\"F.11.\u00a0dblink \u2014 connect to other PostgreSQL databases\">dblink</a></span>.</p>", "text": "Allow extensions to define custom wait events (Masahiro Ikeda) \u00a7 \u00a7 \u00a7 \u00a7 Custom wait events have been added to postgres_fdw and dblink.", "title": "Allow extensions to define custom wait events", "commits": ["c789f0f6c", "c8e318b1b", "c9af05465", "d61f2538a"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "3e18bb054099b012337f229bfd16abbbe7cd8ac7aa3e1f71d01fd0b4a9369325", "section_path": ["Additional Modules"], "commit_groups": [["c789f0f6c"], ["c8e318b1b"], ["c9af05465"], ["d61f2538a"]], "identity_text": "Allow extensions to define custom wait events (Masahiro Ikeda) Custom wait events have been added to postgres-fdw and dblink .", "commit_aliases": ["c789f0f6c", "c8e318b1b", "c9af05465", "d61f2538a"], "source_commits": ["c789f0f6c", "c8e318b1b", "c9af05465", "d61f2538a"], "source_entry_id": "17.0/changes/156", "db_id": "d63e44947b60988f27614175b5661fa5", "patch_ids": ["551282438ee8bf65b5ce0ff14356c112", "685609f4c41ca3f1d73cec33965d58de", "c3c2943815691b7f043da5e16bf4734b", "e8405f8c4ac1936e911a805cbc0c70d9"], "statement_hash": "a8ce5486d4288a9668f620699027d38aab125e45c30eef32f07c3765898aaf7e", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-83672323a9b6d2b5", "migration": false}, {"id": "17.0-9595b57c3a10cc7a", "cves": [], "html": "<p>Add <span><a href=\"/docs/17/pgbuffercache.html\" title=\"F.25.\u00a0pg_buffercache \u2014 inspect PostgreSQL buffer cache state\">pg_buffercache</a></span> function <code>pg_buffercache_evict()</code> to allow shared buffer eviction (Palak Chaturvedi, Thomas Munro) <a href=\"https://postgr.es/c/13453eedd\">\u00a7</a></p>\n<p>This is useful for testing.</p>", "text": "Add pg_buffercache function pg_buffercache_evict() to allow shared buffer eviction (Palak Chaturvedi, Thomas Munro) \u00a7 This is useful for testing.", "title": "Add pg_buffercache function pg_buffercache_evict() to allow shared buffer eviction", "commits": ["13453eedd"], "section": "Additional Modules", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-MODULES", "source_hash": "25fb5ba59857633a6ef736bcfdd9e285cb3152201b9b8d65bf8306e2092aad24", "section_path": ["Additional Modules"], "commit_groups": [["13453eedd"]], "identity_text": "Add pgbuffercache function pg_buffercache_evict() to allow shared buffer eviction (Palak Chaturvedi, Thomas Munro) This is useful for testing.", "commit_aliases": ["13453eedd"], "source_commits": ["13453eedd"], "source_entry_id": "17.0/changes/157", "db_id": "61ff3b352b52e9e18577a69aead34ffe", "patch_ids": ["843c758478199eec5fc56a1397918d2f"], "statement_hash": "5e43907c0ac2702df89595e19c2322444d4bf17b01e71c309f06b9aaf0ae3785", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-9595b57c3a10cc7a", "migration": false}, {"id": "17.0-98feb763be474897", "cves": [], "html": "<p>Replace <a href=\"/docs/17/sql-call.html\" title=\"CALL\"><code>CALL</code></a> parameters in <span>pg_stat_statements</span> with placeholders (Sami Imseih) <a href=\"https://postgr.es/c/11c34b342\">\u00a7</a></p>", "text": "Replace CALL parameters in pg_stat_statements with placeholders (Sami Imseih) \u00a7", "title": "Replace CALL parameters in pg_stat_statements with placeholders", "commits": ["11c34b342"], "section": "Additional Modules / pg_stat_statements", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PGSTATSTATEMENTS", "source_hash": "90c50c720ef38c7ba0b62ef3aedb2e049a0351d05cee703b97d5942d5f84fb82", "section_path": ["Additional Modules", "pg_stat_statements"], "commit_groups": [["11c34b342"]], "identity_text": "Replace CALL parameters in pg_stat_statements with placeholders (Sami Imseih)", "commit_aliases": ["11c34b342"], "source_commits": ["11c34b342"], "source_entry_id": "17.0/changes/158", "db_id": "829435fcd9a5204bcfac577c982e3469", "patch_ids": ["87f5e7d8ff2e863ba43e78ee25116ca8"], "statement_hash": "cc9275113678c3de5e0d531bb7a7a3e8bd0eb99035fef99019d8ced640b7bbc1", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-98feb763be474897", "migration": false}, {"id": "17.0-b15679257d43e7d7", "cves": [], "html": "<p>Replace savepoint names stored in <code>pg_stat_statements</code> with placeholders (Greg Sabino Mullane) <a href=\"https://postgr.es/c/31de7e60d\">\u00a7</a></p>\n<p>This greatly reduces the number of entries needed to record <a href=\"/docs/17/sql-savepoint.html\" title=\"SAVEPOINT\"><code>SAVEPOINT</code></a>, <a href=\"/docs/17/sql-release-savepoint.html\" title=\"RELEASE SAVEPOINT\"><code>RELEASE SAVEPOINT</code></a>, and <a href=\"/docs/17/sql-rollback-to.html\" title=\"ROLLBACK TO SAVEPOINT\"><code>ROLLBACK TO SAVEPOINT</code></a> commands.</p>", "text": "Replace savepoint names stored in pg_stat_statements with placeholders (Greg Sabino Mullane) \u00a7 This greatly reduces the number of entries needed to record SAVEPOINT, RELEASE SAVEPOINT, and ROLLBACK TO SAVEPOINT commands.", "title": "Replace savepoint names stored in pg_stat_statements with placeholders", "commits": ["31de7e60d"], "section": "Additional Modules / pg_stat_statements", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PGSTATSTATEMENTS", "source_hash": "c50057061161192a2379d4bfbff725627b34cd605c895a85c386ec953ee4420f", "section_path": ["Additional Modules", "pg_stat_statements"], "commit_groups": [["31de7e60d"]], "identity_text": "Replace savepoint names stored in pg_stat_statements with placeholders (Greg Sabino Mullane) This greatly reduces the number of entries needed to record SAVEPOINT, RELEASE SAVEPOINT, and ROLLBACK TO SAVEPOINT commands.", "commit_aliases": ["31de7e60d"], "source_commits": ["31de7e60d"], "source_entry_id": "17.0/changes/159", "db_id": "2a21b91a16c60f8e844182a824561a87", "patch_ids": ["e60205f9422d47db4fe5f9b3f589b3f2"], "statement_hash": "bd64485b74b9e153addf621c9eba9c447fbc0b45f5bbe26fab1e255398ea8edd", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-b15679257d43e7d7", "migration": false}, {"id": "17.0-6306b9c529a97b16", "cves": [], "html": "<p>Replace the two-phase commit <acronym>GID</acronym>s stored in <code>pg_stat_statements</code> with placeholders (Michael Paquier) <a href=\"https://postgr.es/c/638d42a3c\">\u00a7</a></p>\n<p>This greatly reduces the number of entries needed to record <a href=\"/docs/17/sql-prepare-transaction.html\" title=\"PREPARE TRANSACTION\"><code>PREPARE TRANSACTION</code></a>, <a href=\"/docs/17/sql-commit-prepared.html\" title=\"COMMIT PREPARED\"><code>COMMIT PREPARED</code></a>, and <a href=\"/docs/17/sql-rollback-prepared.html\" title=\"ROLLBACK PREPARED\"><code>ROLLBACK PREPARED</code></a>.</p>", "text": "Replace the two-phase commit GIDs stored in pg_stat_statements with placeholders (Michael Paquier) \u00a7 This greatly reduces the number of entries needed to record PREPARE TRANSACTION, COMMIT PREPARED, and ROLLBACK PREPARED.", "title": "Replace the two-phase commit GIDs stored in pg_stat_statements with placeholders", "commits": ["638d42a3c"], "section": "Additional Modules / pg_stat_statements", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PGSTATSTATEMENTS", "source_hash": "6678359f9464015d398365b004a42f49431b6266264ad35b6ed6fc67b612a7e1", "section_path": ["Additional Modules", "pg_stat_statements"], "commit_groups": [["638d42a3c"]], "identity_text": "Replace the two-phase commit GIDs stored in pg_stat_statements with placeholders (Michael Paquier) This greatly reduces the number of entries needed to record PREPARE TRANSACTION, COMMIT PREPARED, and ROLLBACK PREPARED.", "commit_aliases": ["638d42a3c"], "source_commits": ["638d42a3c"], "source_entry_id": "17.0/changes/160", "db_id": "b33f56a77ff25930b3040bfc942613b5", "patch_ids": ["57b4c7be3c57b33edc95595f13341b10"], "statement_hash": "9fa3b83bd74b30a68b6780fde124f414b7aee39d0beb27daa6a9bde01041969f", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-6306b9c529a97b16", "migration": false}, {"id": "17.0-52df26d9755e4bbc", "cves": [], "html": "<p>Track <a href=\"/docs/17/sql-deallocate.html\" title=\"DEALLOCATE\"><code>DEALLOCATE</code></a> in <code>pg_stat_statements</code> (Dagfinn Ilmari Manns\u00e5ker, Michael Paquier) <a href=\"https://postgr.es/c/bb45156f3\">\u00a7</a></p>\n<p><code>DEALLOCATE</code> names are stored in <code>pg_stat_statements</code> as placeholders.</p>", "text": "Track DEALLOCATE in pg_stat_statements (Dagfinn Ilmari Manns\u00e5ker, Michael Paquier) \u00a7 DEALLOCATE names are stored in pg_stat_statements as placeholders.", "title": "Track DEALLOCATE in pg_stat_statements", "commits": ["bb45156f3"], "section": "Additional Modules / pg_stat_statements", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PGSTATSTATEMENTS", "source_hash": "a592f4b812f8966cda97db262c24f01e7c1c6a4e472ff15446e81e012657ee1b", "section_path": ["Additional Modules", "pg_stat_statements"], "commit_groups": [["bb45156f3"]], "identity_text": "Track DEALLOCATE in pg_stat_statements (Dagfinn Ilmari Manns\u00e5ker, Michael Paquier) DEALLOCATE names are stored in pg_stat_statements as placeholders.", "commit_aliases": ["bb45156f3"], "source_commits": ["bb45156f3"], "source_entry_id": "17.0/changes/161", "db_id": "5951b4d43885e4df40c6caf1c30a6ea4", "patch_ids": ["056d4a0cbce0e0223cbd0767af1dda9e"], "statement_hash": "f2259aba30c6564e7836765ac064b24dc77c1d6b0cfd71f91b1c1e8b16971140", "relations": [], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-52df26d9755e4bbc", "migration": false}, {"id": "17.0-a60065415dcd988f", "cves": [], "html": "<p>Add local I/O block read/write timing statistics columns of <code>pg_stat_statements</code> (Nazir Bilal Yavuz) <a href=\"https://postgr.es/c/295c36c0c\">\u00a7</a> <a href=\"https://postgr.es/c/5147ab1dd\">\u00a7</a></p>\n<p>The new columns are <code>local_blk_read_time</code> and <code>local_blk_write_time</code>.</p>", "text": "Add local I/O block read/write timing statistics columns of pg_stat_statements (Nazir Bilal Yavuz) \u00a7 \u00a7 The new columns are local_blk_read_time and local_blk_write_time.", "title": "Add local I/O block read/write timing statistics columns of pg_stat_statements", "commits": ["295c36c0c", "5147ab1dd"], "section": "Additional Modules / pg_stat_statements", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PGSTATSTATEMENTS", "source_hash": "b6c1e6dfc39523b1bbc567f56280f7d73996ef76d15743118b7affb6a69bf8e3", "section_path": ["Additional Modules", "pg_stat_statements"], "commit_groups": [["295c36c0c"], ["5147ab1dd"]], "identity_text": "Add local I/O block read/write timing statistics columns of pg_stat_statements (Nazir Bilal Yavuz) The new columns are local_blk_read_time and local_blk_write_time.", "commit_aliases": ["295c36c0c", "5147ab1dd"], "source_commits": ["295c36c0c", "5147ab1dd"], "source_entry_id": "17.0/changes/162", "db_id": "a487787ae801d826d7c42eb4f15dd2e9", "patch_ids": ["5bbfcb7876ccc999e0bc578d10ccf3d1", "fed9aec98df0f1a466087cc808bd62be"], "statement_hash": "278c2b09b36f008be4c98de8c051e5fe1acff3e3f2e90db73286bc0b444f7454", "relations": [{"rule": 2, "type": "related", "target": "3a8f2092e95f906fe2ba774157ee86a4", "evidence": {"same_day": true, "patch_ids": ["5bbfcb7876ccc999e0bc578d10ccf3d1"], "ambiguous_patch_ids": ["5bbfcb7876ccc999e0bc578d10ccf3d1"]}}], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-a60065415dcd988f", "migration": false}, {"id": "17.0-08bc4b6239b4b2c2", "cves": [], "html": "<p>Add <acronym>JIT</acronym> deform_counter details to <code>pg_stat_statements</code> (Dmitry Dolgov) <a href=\"https://postgr.es/c/5a3423ad8\">\u00a7</a></p>", "text": "Add JIT deform_counter details to pg_stat_statements (Dmitry Dolgov) \u00a7", "title": "Add JIT deform_counter details to pg_stat_statements", "commits": ["5a3423ad8"], "section": "Additional Modules / pg_stat_statements", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PGSTATSTATEMENTS", "source_hash": "aa717c9cf9462f74ba98dab59847f2045b8215f349a843cb548b29b2a845da97", "section_path": ["Additional Modules", "pg_stat_statements"], "commit_groups": [["5a3423ad8"]], "identity_text": "Add JIT deform_counter details to pg_stat_statements (Dmitry Dolgov)", "commit_aliases": ["5a3423ad8"], "source_commits": ["5a3423ad8"], "source_entry_id": "17.0/changes/163", "db_id": "cfc33f9d4d45dd958c4e7f050c7845a6", "patch_ids": ["69b5f4ac2075731de6ade1ebfae6e6c3"], "statement_hash": "e9e315333b7c76b331b16fb18be5f5185d899d1ff9058a43131cfdb7073d9ccf", "relations": [{"rule": 2, "type": "related", "target": "14f807d67bbb33e16136e47a0d977573", "evidence": {"same_day": true, "patch_ids": ["69b5f4ac2075731de6ade1ebfae6e6c3"], "ambiguous_patch_ids": ["69b5f4ac2075731de6ade1ebfae6e6c3"]}}], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-08bc4b6239b4b2c2", "migration": false}, {"id": "17.0-c5b36d1fa6282ceb-1", "cves": [], "html": "<p>Add optional fourth argument (<code>minmax_only</code>) to <code>pg_stat_statements_reset()</code> to allow for the resetting of only min/max statistics (Andrei Zubkov) <a href=\"https://postgr.es/c/dc9f8a798\">\u00a7</a></p>\n<p>This argument defaults to <code>false</code>.</p>", "text": "Add optional fourth argument (minmax_only) to pg_stat_statements_reset() to allow for the resetting of only min/max statistics (Andrei Zubkov) \u00a7 This argument defaults to false.", "title": "Add optional fourth argument (minmax_only) to pg_stat_statements_reset() to allow for the resetting of only min/max statistics", "commits": ["dc9f8a798"], "section": "Additional Modules / pg_stat_statements", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PGSTATSTATEMENTS", "source_hash": "aa11a76de656b08b40e0985b99fe88255608b5a625ea489eb21fc718bfbd828f", "section_path": ["Additional Modules", "pg_stat_statements"], "commit_groups": [["dc9f8a798"]], "identity_text": "Add optional fourth argument (minmax_only) to pg_stat_statements_reset() to allow for the resetting of only min/max statistics (Andrei Zubkov) This argument defaults to false.", "commit_aliases": ["dc9f8a798"], "source_commits": ["dc9f8a798"], "source_entry_id": "17.0/changes/164", "db_id": "bc79670356131e39aad8d56b8b59d119", "patch_ids": ["db7ed1ad22868410847bd9e5deaf33a5"], "statement_hash": "1e200afd7116407e1b97f88b968e3951d1029d4f7f611df985043c99d4d4df8b", "relations": [{"rule": 2, "type": "related", "target": "93ab538cead5b7f1878a5a35ff9096e8", "evidence": {"same_day": true, "patch_ids": ["db7ed1ad22868410847bd9e5deaf33a5"], "ambiguous_patch_ids": ["db7ed1ad22868410847bd9e5deaf33a5"]}}], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-c5b36d1fa6282ceb-1", "migration": false}, {"id": "17.0-c5b36d1fa6282ceb-2", "cves": [], "html": "<p>Add <code>pg_stat_statements</code> columns <code>stats_since</code> and <code>minmax_stats_since</code> to track entry creation time and last min/max reset time (Andrei Zubkov) <a href=\"https://postgr.es/c/dc9f8a798\">\u00a7</a></p>", "text": "Add pg_stat_statements columns stats_since and minmax_stats_since to track entry creation time and last min/max reset time (Andrei Zubkov) \u00a7", "title": "Add pg_stat_statements columns stats_since and minmax_stats_since to track entry creation time and last min/max reset time", "commits": ["dc9f8a798"], "section": "Additional Modules / pg_stat_statements", "category": "feature", "source_url": "/docs/release/17.0/#RELEASE-17-PGSTATSTATEMENTS", "source_hash": "78310acbc382ecef0bd777a01f5ac39f0d3565334f68fb387ff6a0e10c7dfeaf", "section_path": ["Additional Modules", "pg_stat_statements"], "commit_groups": [["dc9f8a798"]], "identity_text": "Add pg_stat_statements columns stats_since and minmax_stats_since to track entry creation time and last min/max reset time (Andrei Zubkov)", "commit_aliases": ["dc9f8a798"], "source_commits": ["dc9f8a798"], "source_entry_id": "17.0/changes/165", "db_id": "93ab538cead5b7f1878a5a35ff9096e8", "patch_ids": ["db7ed1ad22868410847bd9e5deaf33a5"], "statement_hash": "a1116325aeacc525e218e293d407fa884f808e5cadf4ef8a70b574a33284f053", "relations": [{"rule": 2, "type": "related", "target": "bc79670356131e39aad8d56b8b59d119", "evidence": {"same_day": true, "patch_ids": ["db7ed1ad22868410847bd9e5deaf33a5"], "ambiguous_patch_ids": ["db7ed1ad22868410847bd9e5deaf33a5"]}}], "category_label": "Features", "url": "/docs/compare/?release=17.0#17.0-c5b36d1fa6282ceb-2", "migration": false}], "initial_entry_count": 182, "migration_html": "<p>A dump/restore using <a href=\"/docs/17/app-pg-dumpall.html\" title=\"pg_dumpall\"><span><span>pg_dumpall</span></span></a> or use of <a href=\"/docs/17/pgupgrade.html\" title=\"pg_upgrade\"><span><span>pg_upgrade</span></span></a> or logical replication is required for those wishing to migrate data from any previous release. See <a href=\"/docs/17/upgrading.html\" title=\"18.6.\u00a0Upgrading a PostgreSQL Cluster\">Section\u00a018.6</a> for general information on migrating to new major releases.</p>\n<p>Version 17 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities:</p>\n<div>\n</div>", "category_filters": [{"key": "feature", "label": "Features", "count": 154}, {"key": "bugfix", "label": "Bug fixes", "count": 2}, {"key": "security", "label": "Security", "count": 0}, {"key": "performance", "label": "Performance", "count": 9}, {"key": "compatibility", "label": "Compatibility", "count": 17}, {"key": "improvement", "label": "Improvements", "count": 0}], "security_rows": [{"id": "CVE-2026-6638", "title": "PostgreSQL REFRESH PUBLICATION allows SQL injection via table name", "url": "https://www.postgresql.org/support/security/CVE-2026-6638/", "score": 3.7, "vector": "AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N", "description": "SQL injection in PostgreSQL logical replication ALTER SUBSCRIPTION ... REFRESH PUBLICATION allows a subscriber table creator to execute arbitrary SQL with the subscription's publication-side credentials. The attack takes effect at the next REFRESH PUBLICATION. Within major versions 16, 17, and 18, minor versions before PostgreSQL 18.4, 17.10, and 16.14 are affected. Versions before PostgreSQL 16 are unaffected.", "fixed": "17.10", "fixed_url": "/docs/compare/?release=17.10", "affected": "17", "component": "core server", "mentions": [{"build": "17.10", "version": "17.10", "title": "Properly quote object names in logical replication origin checks", "url": "/docs/compare/?release=17.10#17.10-fdd0ba1867f4cdc1"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6637", "title": "PostgreSQL refint allows stack buffer overflow and SQL injection", "url": "https://www.postgresql.org/support/security/CVE-2026-6637/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Stack buffer overflow in PostgreSQL module \"refint\" allows an unprivileged database user to execute arbitrary code as the operating system user running the database. A distinct attack is possible if the application declares a user-controlled column as a \"refint\" cascade primary key and facilitates user-controlled updates to that column. In that case, a SQL injection allows a primary key update value provider to execute arbitrary SQL as the database user performing the primary key update. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "fixed": "17.10", "fixed_url": "/docs/compare/?release=17.10", "affected": "17", "component": "contrib module", "mentions": [{"build": "17.11", "version": "17.11", "title": "Avoid NULL-pointer dereference in contrib/refint's check_foreign_key()", "url": "/docs/compare/?release=17.11#17.11-3c3f973709d9fe9a"}, {"build": "17.10", "version": "17.10", "title": "Prevent SQL injection and buffer overruns in contrib/spi", "url": "/docs/compare/?release=17.10#17.10-24a0ab68af146f7d"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6479", "title": "PostgreSQL SSL/GSS init causes denial of service, via uncontrolled recursion", "url": "https://www.postgresql.org/support/security/CVE-2026-6479/", "score": 7.5, "vector": "AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "description": "Uncontrolled recursion in PostgreSQL SSL and GSS negotiation allows an attacker able to connect to a PostgreSQL AF_UNIX socket to achieve sustained denial of service. If SSL and GSS are both disabled, an attacker can do the same via access to a PostgreSQL TCP socket. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "fixed": "17.10", "fixed_url": "/docs/compare/?release=17.10", "affected": "17", "component": "core server", "mentions": [{"build": "17.10", "version": "17.10", "title": "Prevent unbounded recursion while processing startup packets", "url": "/docs/compare/?release=17.10#17.10-11e46f0b0085f2d6"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6478", "title": "PostgreSQL discloses MD5-hashed passwords via covert timing channel", "url": "https://www.postgresql.org/support/security/CVE-2026-6478/", "score": 6.5, "vector": "AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N", "description": "Covert timing channel in comparison of MD5-hashed password in PostgreSQL authentication allows an attacker to recover user credentials sufficient to authenticate. This does not affect scram-sha-256 passwords, the default in all supported releases. However, current databases may have MD5-hashed passwords originating in upgrades from PostgreSQL 13 or earlier. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "fixed": "17.10", "fixed_url": "/docs/compare/?release=17.10", "affected": "17", "component": "core server", "mentions": [{"build": "17.10", "version": "17.10", "title": "Use timing-safe string comparisons in authentication code", "url": "/docs/compare/?release=17.10#17.10-61c7a5bccb286bea"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6477", "title": "PostgreSQL libpq lo_* functions let server superuser overwrite client stack memory", "url": "https://www.postgresql.org/support/security/CVE-2026-6477/", "score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "description": "Use of inherently dangerous function PQfn(..., result_is_int=0, ...) in PostgreSQL libpq lo_export(), lo_read(), lo_lseek64(), and lo_tell64() functions allows the server superuser to overwrite a client stack buffer with an arbitrarily-large response. Like gets(), PQfn(..., result_is_int=0, ...) stores arbitrary-length, server-determined data into a buffer of unspecified size. Because both the \\lo_export command in psql and pg_dump call lo_read(), the server superuser can overwrite pg_dump or psql stack memory. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "fixed": "17.10", "fixed_url": "/docs/compare/?release=17.10", "affected": "17", "component": "client", "mentions": [{"build": "17.10", "version": "17.10", "title": "Mark PQfn() as unsafe, and avoid using it within libpq", "url": "/docs/compare/?release=17.10#17.10-a3a6ffe2e68f9c70"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6476", "title": "PostgreSQL pg_createsubscriber allows SQL injection via subscription name", "url": "https://www.postgresql.org/support/security/CVE-2026-6476/", "score": 7.2, "vector": "AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H", "description": "SQL injection in PostgreSQL pg_createsubscriber allows an attacker with pg_create_subscription rights to execute arbitrary SQL as a superuser. The attack takes effect when pg_createsubscriber next runs. Within major versions 17 and 18, minor versions before PostgreSQL 18.4 and 17.10 are affected. Versions before PostgreSQL 17 are unaffected.", "fixed": "17.10", "fixed_url": "/docs/compare/?release=17.10", "affected": "17", "component": "client", "mentions": [{"build": "17.10", "version": "17.10", "title": "Properly quote subscription names in pg_createsubscriber", "url": "/docs/compare/?release=17.10#17.10-927543ba721f9720"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6475", "title": "PostgreSQL pg_basebackup and pg_rewind can overwrite unrelated files of origin superuser choice", "url": "https://www.postgresql.org/support/security/CVE-2026-6475/", "score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "description": "Symlink following in PostgreSQL pg_basebackup plain format and in pg_rewind allows an origin superuser to overwrite local files, e.g. /var/lib/postgres/.bashrc, that hijack the operating system account. It will remain the case that starting the server after these commands implicitly trusts the origin superuser, due to features like shared_preload_libraries. Hence, the attack has practical implications only if one takes relevant action between these commands and server start, like moving the files to a different VM or snapshotting the VM. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "fixed": "17.10", "fixed_url": "/docs/compare/?release=17.10", "affected": "17", "component": "client", "mentions": [{"build": "17.10", "version": "17.10", "title": "Prevent path traversal in pg_basebackup and pg_rewind", "url": "/docs/compare/?release=17.10#17.10-91d502adb9e9905a"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6474", "title": "PostgreSQL timeofday() can disclose portions of server memory", "url": "https://www.postgresql.org/support/security/CVE-2026-6474/", "score": 4.3, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "description": "Externally-controlled format string in PostgreSQL timeofday() function allows an attacker to retrieve portions of server memory, via crafted timezone zones. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "fixed": "17.10", "fixed_url": "/docs/compare/?release=17.10", "affected": "17", "component": "core server", "mentions": [{"build": "17.10", "version": "17.10", "title": "Guard against malicious time zone names in timeofday() and pg_strftime()", "url": "/docs/compare/?release=17.10#17.10-f68835d296474e15"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6473", "title": "PostgreSQL server undersizes allocations, via integer wraparound", "url": "https://www.postgresql.org/support/security/CVE-2026-6473/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Integer wraparound in multiple PostgreSQL server features allows an unprivileged database user to cause the server to undersize an allocation and write out-of-bounds. This may execute arbitrary code as the operating system user running the database. In applications that pass gigabyte-scale user inputs to the relevant database functions, the application input provider may achieve a segmentation fault. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "fixed": "17.10", "fixed_url": "/docs/compare/?release=17.10", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Fix integer overflows in memory-allocation calculations in PL/Perl and PL/Tcl", "url": "/docs/compare/?release=17.11#17.11-7026dc1b76714418"}, {"build": "17.10", "version": "17.10", "title": "Fix assorted integer overflows in memory-allocation calculations", "url": "/docs/compare/?release=17.10#17.10-a0bf50b47f7c6ba2"}, {"build": "17.10", "version": "17.10", "title": "Reject over-length options in ts_headline()", "url": "/docs/compare/?release=17.10#17.10-b66b265350df29d2"}, {"build": "17.10", "version": "17.10", "title": "Guard against field overflow within contrib/intarray's query_int type and contrib/ltree's ltxtquery type", "url": "/docs/compare/?release=17.10#17.10-992f2d3fb9146406"}, {"build": "17.10", "version": "17.10", "title": "Guard against overly long values of contrib/ltree's lquery type", "url": "/docs/compare/?release=17.10#17.10-ac24cc16660e8737"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6472", "title": "PostgreSQL CREATE TYPE does not check multirange schema CREATE privilege", "url": "https://www.postgresql.org/support/security/CVE-2026-6472/", "score": 5.4, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N", "description": "Missing authorization in PostgreSQL CREATE TYPE allows an object creator to hijack other queries that use search_path to find user-defined types, including extension-defined types. That is to say, the victim will execute arbitrary SQL functions of the attacker's choice. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected.", "fixed": "17.10", "fixed_url": "/docs/compare/?release=17.10", "affected": "17", "component": "core server", "mentions": [{"build": "17.10", "version": "17.10", "title": "When creating a multirange type, ensure the user has CREATE privilege on the schema specified for the multirange type", "url": "/docs/compare/?release=17.10#17.10-7b894433ca4b5fde"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6471", "title": "PostgreSQL logical decoding can dlopen arbitrary file", "url": "https://www.postgresql.org/support/security/CVE-2026-6471/", "score": 7.2, "vector": "AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H", "description": "Missing authorization in PostgreSQL logical decoding allows a non-superuser holding REPLICATION privilege to dlopen any file visible to the operating system account running the server, via the choice of logical decoding plugin. This in turn runs arbitrary code as that account. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Restrict logical decoding output plugins to the set specified by a new server parameter output_plugin_libraries", "url": "/docs/compare/?release=17.11#17.11-ccab0c809e14d029"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6470", "title": "PostgreSQL fails to check type USAGE privilege", "url": "https://www.postgresql.org/support/security/CVE-2026-6470/", "score": 4.3, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L", "description": "Missing authorization in PostgreSQL DDL commands allows an object creator to achieve denial of service against ALTER and DROP of the type, via creating a dependency on the type. Many DDL operations did check the privilege, but assigning a range subtype and referencing the type from an SQL expression did not. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Check for USAGE privilege on data types in places that formerly failed to check that", "url": "/docs/compare/?release=17.11#17.11-575634f97737603c"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6469", "title": "PostgreSQL ALTER TABLE ALTER TYPE resets extended statistics ownership", "url": "https://www.postgresql.org/support/security/CVE-2026-6469/", "score": 3.8, "vector": "AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:L/A:L", "description": "Incorrect ownership assignment in PostgreSQL ALTER TABLE ALTER TYPE command reassigns ownership of dependent statistics objects to the current user. This wrongly allows the table owner to run DROP STATISTICS and ALTER STATISTICS via this improper ownership. It wrongly denies those commands to the prior statistics object owner. DROP TABLE remains able to remove statistics objects, so this exploit achieves nothing in many ownership arrangements. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Preserve the ownership of extended statistics objects when they are rebuilt by ALTER TABLE", "url": "/docs/compare/?release=17.11#17.11-50a00c5a01592c04"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-6464", "title": "PostgreSQL psql COPY FROM STDIN early failure processes data lines as psql commands", "url": "https://www.postgresql.org/support/security/CVE-2026-6464/", "score": 8.1, "vector": "AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H", "description": "Untrusted data inclusion in PostgreSQL psql COPY may allow a server administrator to elicit execution of data lines as psql commands, via error injection. If the \"COPY FROM STDIN\" or \"\\copy FROM STDIN\" command fails before the server indicates that it awaits input rows, psql processes the in-line data rows as psql commands. \"COPY FROM\" with a filename is unaffected. The server administrator has no inherent control over the data rows, so a complete attack requires the attacker to separately acquire control of both the server and the data rows. Alternatively, an attacker controlling data rows alone might complete an attack through a coincidental error that they don't control. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "client", "mentions": [{"build": "17.11", "version": "17.11", "title": "Fix psql to skip in-line data following a scripted COPY ... FROM STDIN command, even if the COPY fails before sending PGRES_COPY_IN", "url": "/docs/compare/?release=17.11#17.11-8dd81897faaffe37"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-2006", "title": "PostgreSQL missing validation of multibyte character length executes arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2026-2006/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Missing validation of multibyte character length in PostgreSQL text manipulation allows a database user to issue crafted queries that achieve a buffer overrun. That suffices to execute arbitrary code as the operating system user running the database. Versions before PostgreSQL 18.2, 17.8, 16.12, 15.16, and 14.21 are affected.", "fixed": "17.8", "fixed_url": "/docs/compare/?release=17.8", "affected": "17", "component": "core server", "mentions": [{"build": "17.9", "version": "17.9", "title": "Avoid incorrect complaint of invalid encoding when substring() is applied to \u201ctoasted\u201d data", "url": "/docs/compare/?release=17.9#17.9-24d7e69f6ec0ae9a"}, {"build": "17.8", "version": "17.8", "title": "Fix inadequate validation of multibyte character lengths", "url": "/docs/compare/?release=17.8#17.8-0378679c62701a5e"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-2005", "title": "PostgreSQL pgcrypto heap buffer overflow executes arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2026-2005/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Heap buffer overflow in PostgreSQL pgcrypto allows a ciphertext provider to execute arbitrary code as the operating system user running the database. Versions before PostgreSQL 18.2, 17.8, 16.12, 15.16, and 14.21 are affected.", "fixed": "17.8", "fixed_url": "/docs/compare/?release=17.8", "affected": "17", "component": "contrib module", "mentions": [{"build": "17.8", "version": "17.8", "title": "Fix buffer overrun in contrib/pgcrypto's PGP decryption functions", "url": "/docs/compare/?release=17.8#17.8-ad02898fb1831e36"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-2004", "title": "PostgreSQL intarray missing validation of type of input to selectivity estimator executes arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2026-2004/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Missing validation of type of input in PostgreSQL intarray extension selectivity estimator function allows an object creator to execute arbitrary code as the operating system user running the database. Versions before PostgreSQL 18.2, 17.8, 16.12, 15.16, and 14.21 are affected.", "fixed": "17.8", "fixed_url": "/docs/compare/?release=17.8", "affected": "17", "component": "contrib module", "mentions": [{"build": "17.8", "version": "17.8", "title": "Harden selectivity estimators against being attached to operators that accept unexpected data types", "url": "/docs/compare/?release=17.8#17.8-66e960e22441cfaa"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-2003", "title": "PostgreSQL oidvector discloses a few bytes of memory", "url": "https://www.postgresql.org/support/security/CVE-2026-2003/", "score": 4.3, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "description": "Improper validation of type \"oidvector\" in PostgreSQL allows a database user to disclose a few bytes of server memory. We have not ruled out viability of attacks that arrange for presence of confidential information in disclosed bytes, but they seem unlikely. Versions before PostgreSQL 18.2, 17.8, 16.12, 15.16, and 14.21 are affected.", "fixed": "17.8", "fixed_url": "/docs/compare/?release=17.8", "affected": "17", "component": "core server", "mentions": [{"build": "17.8", "version": "17.8", "title": "Guard against unexpected dimensions of oidvector/int2vector", "url": "/docs/compare/?release=17.8#17.8-a1109c4f32ae03d0"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-19385", "title": "PostgreSQL pg_dump heap buffer overflow executes arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2026-19385/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Heap buffer overflow in PostgreSQL pg_dump of long function transform lists allows an object creator to execute arbitrary code as the operating system user running pg_dump, via a crafted transform list. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "client", "mentions": [{"build": "17.11", "version": "17.11", "title": "Remove pg_dump's assumption that pg_proc.protrftypes cannot have more than FUNC_MAX_ARGS entries", "url": "/docs/compare/?release=17.11#17.11-f6aaa44b60ea5479"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-18408", "title": "PostgreSQL psql \\unrestrict lets superuser of pg_dump origin server execute arbitrary code in psql client", "url": "https://www.postgresql.org/support/security/CVE-2026-18408/", "score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "description": "Untrusted data inclusion in pg_dump in PostgreSQL allows a malicious superuser of the origin server to inject arbitrary code for restore-time execution as the client operating system account running psql to restore the dump, via psql \\restrict meta-command input expansion. The fix for CVE-2025-8714 introduced \\restrict and \\unrestrict to block this attack, but \\unrestrict itself was sufficient for an attack. pg_dumpall is also affected. pg_restore is affected when used to generate a plain-format dump. Non-core use of \\restrict would be affected, but we've not identified non-core use. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "client", "mentions": [{"build": "17.11", "version": "17.11", "title": "Do not do backquote expansion on the argument of psql's \\unrestrict command", "url": "/docs/compare/?release=17.11#17.11-7f417b32587acff8"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-18024", "title": "PostgreSQL ascii() function reads past end of buffer", "url": "https://www.postgresql.org/support/security/CVE-2026-18024/", "score": 4.3, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "description": "Buffer over-read in PostgreSQL ascii() SQL function allows a user to disclose up to 3 bytes after the end of a specific allocation, via a crafted text value. This is the same class of defect that CVE-2026-2006 fixed, though this instance has less impact. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Harden the ascii() function against invalid input", "url": "/docs/compare/?release=17.11#17.11-e6de3d1ea5ee5a52"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-16241", "title": "PostgreSQL ECPG integer underflow can crash the client", "url": "https://www.postgresql.org/support/security/CVE-2026-16241/", "score": 3.8, "vector": "AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:L/A:L", "description": "Integer underflow in PostgreSQL ECPG allows a database server administrator to achieve temporary denial of service against the ECPG client via sending a bytea value lacking the mandatory prefix. The client overwrites a huge memory region with bytes outside attacker knowledge or control. This typically yields a simple SIGSEGV, but rare cases might achieve client-specific integrity impact via the write. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "client", "mentions": [{"build": "17.11", "version": "17.11", "title": "Fix out-of-bounds writes in ecpg applications caused by invalid bytea data received from the server", "url": "/docs/compare/?release=17.11#17.11-368d04431d80a7fd"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-16239", "title": "PostgreSQL type confusion in cursor CLOSE + DECLARE executes arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2026-16239/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Type confusion in PostgreSQL \"portal\"/cursor lifecycle allows a user to execute arbitrary code as the operating system user running the database, via re-creation of a cursor or other portal with different types. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Cross-check the output row type of a portal running EXECUTE or FETCH", "url": "/docs/compare/?release=17.11#17.11-b9a0ccf8cc602cca"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-16238", "title": "PostgreSQL type confusion in pg_restore_attribute_stats() executes arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2026-16238/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Type confusion in PostgreSQL pg_restore_attribute_stats() allows an object creator to execute arbitrary code as the operating system user running the database, via conflation of range and multirange values. Within major version 18, minor versions before PostgreSQL 18.6 are affected. Versions before PostgreSQL 18 are unaffected.", "fixed": "", "fixed_url": "", "affected": "", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Fix multirange type handling in pg_restore_attribute_stats()", "url": "/docs/compare/?release=17.11#17.11-ba8cb69723cdb335"}], "evidence": "release-note-mention"}, {"id": "CVE-2026-15742", "title": "PostgreSQL fuzzystrmatch writes effectively-arbitrary addresses, via integer wraparound", "url": "https://www.postgresql.org/support/security/CVE-2026-15742/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Integer wraparound in PostgreSQL fuzzystrmatch allows a user to direct writes to a huge range of addresses, executing arbitrary code as the operating system user running the database, via extreme inputs to SQL function levenshtein() or levenshtein_less_equal(). Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "contrib module", "mentions": [{"build": "17.11", "version": "17.11", "title": "Fix integer overflows in contrib/fuzzystrmatch's levenshtein() and levenshtein_less_equal() functions", "url": "/docs/compare/?release=17.11#17.11-8ee281616fb9fd49"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-15741", "title": "PostgreSQL expression deparse allows SQL injection via EXTRACT argument", "url": "https://www.postgresql.org/support/security/CVE-2026-15741/", "score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "description": "SQL injection in PostgreSQL EXTRACT() deparse allows an object owner to execute arbitrary SQL as a superuser via a hostile object definition. Attacks affect expression deparse consumers broadly, including pg_dump, psql commands like \\sf, and any similar usage in non-core tools. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "When deparsing an EXTRACT() function call, quote the field name if needed", "url": "/docs/compare/?release=17.11#17.11-2bafbd49437d6dde"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14681", "title": "PostgreSQL improper enforcement of GSSAPI encryption when coupled with SSL", "url": "https://www.postgresql.org/support/security/CVE-2026-14681/", "score": 4.2, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N", "description": "Improper enforcement of message integrity in PostgreSQL GSSAPI support allows a user to negotiate GSSAPI contrary to pg_hba.conf rules, via initial direct TLS connection. Despite a pg_hba.conf that appears to require GSSAPI, the connection may exchange data over TLS encryption alone. If the TLS settings are more permissive than the GSS settings, the connection may continue with lesser protection. Within major versions 17-18, minor versions before PostgreSQL 18.6 and 17.11 are affected. Versions before PostgreSQL 17 are unaffected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Reject GSSEncRequest after direct SSL connection", "url": "/docs/compare/?release=17.11#17.11-1d103f53312d0305"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14680", "title": "PostgreSQL type confusion via \"internal\" arguments", "url": "https://www.postgresql.org/support/security/CVE-2026-14680/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Type confusion with PostgreSQL \"internal\" data type arguments allows any user to execute arbitrary code as the operating system user running the database, via calls to functions with that argument type. Type \"internal\" represents a class of mutually-incompatible data structures not intended for access from SQL. The system intended to prevent such function calls, but this prevention had gaps. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Reject calls from SQL to functions that take or return type internal", "url": "/docs/compare/?release=17.11#17.11-ea70ef62a58da283"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14679", "title": "PostgreSQL stack buffer overflow in argument match writes 0x0 and 0x1 to server memory", "url": "https://www.postgresql.org/support/security/CVE-2026-14679/", "score": 8.2, "vector": "AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H", "description": "Stack buffer overflow in PostgreSQL argument name matching allows an object creator to achieve unknown impacts via OUT parameter count. The attack can write only 0x0 and 0x1 bytes. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Fix various places that mistakenly assumed they would not have to deal with more than FUNC_MAX_ARGS function arguments", "url": "/docs/compare/?release=17.11#17.11-dd9a429d3ce13500"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14678", "title": "PostgreSQL pg_trgm picksplit reads past end of buffer", "url": "https://www.postgresql.org/support/security/CVE-2026-14678/", "score": 4.3, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "description": "Buffer over-read in PostgreSQL pg_trgm index picksplit function reads past end of a heap buffer. This might allow a table maintainer to infer limited memory values, via the lossy signal of index split choices. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "contrib module", "mentions": [{"build": "17.11", "version": "17.11", "title": "Fix datatype error in contrib/pg_trgm's GiST picksplit function", "url": "/docs/compare/?release=17.11#17.11-caca197ce0ba4b3f"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14677", "title": "PostgreSQL 32-bit pltcl and plperl undersize allocations, via integer wraparound", "url": "https://www.postgresql.org/support/security/CVE-2026-14677/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Integer wraparound in PostgreSQL 32-bit builds of pltcl and plperl allows an object creator to cause the server to undersize an allocation and write out-of-bounds via crafted function bodies. This may execute arbitrary code as the operating system user running the database. CVE-2026-6473 had fixed similar problems. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Fix integer overflows in memory-allocation calculations in PL/Perl and PL/Tcl", "url": "/docs/compare/?release=17.11#17.11-7026dc1b76714418"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14676", "title": "PostgreSQL pg_stat_statements heap buffer overflow executes arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2026-14676/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Heap buffer overflow in PostgreSQL pg_stat_statements allows the query author to execute arbitrary code as the operating system user running the database, via crafted queries containing array constants. Within major version 18, minor versions before PostgreSQL 18.6 are affected. Versions before PostgreSQL 18 are unaffected.", "fixed": "", "fixed_url": "", "affected": "", "component": "contrib module", "mentions": [{"build": "17.11", "version": "17.11", "title": "Fix buffer overrun in contrib/pg_stat_statements", "url": "/docs/compare/?release=17.11#17.11-881f882c67a9948d"}], "evidence": "release-note-mention"}, {"id": "CVE-2026-14673", "title": "PostgreSQL amcheck does not clear untrusted search path", "url": "https://www.postgresql.org/support/security/CVE-2026-14673/", "score": 3.8, "vector": "AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N", "description": "Untrusted search path in PostgreSQL amcheck allows a grantee of amcheck function EXECUTE privilege to execute arbitrary functions as the owners of expression indexes that depend on the search path, via setting a hostile search path before calling the amcheck function. Within major versions 18, 16, 15, and 14, minor versions before PostgreSQL 18.6, 16.15, 15.19, and 14.24 are affected. PostgreSQL 17 is unaffected.", "fixed": "", "fixed_url": "", "affected": "", "component": "contrib module", "mentions": [{"build": "17.11", "version": "17.11", "title": "Ensure that contrib/amcheck functions restrict search_path before executing index expressions", "url": "/docs/compare/?release=17.11#17.11-ee34ba8ba8f4fa3d"}], "evidence": "release-note-mention"}, {"id": "CVE-2026-14672", "title": "PostgreSQL observable response discrepancy with non-default scram_iterations provides user existence oracle", "url": "https://www.postgresql.org/support/security/CVE-2026-14672/", "score": 5.3, "vector": "AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N", "description": "Observable response discrepancy in PostgreSQL SCRAM authentication allows an unauthenticated user to test the existence of a user via observing the SCRAM iteration count. This requires the probed user to have a non-default scram_iterations count, because the authentication challenge for a nonexistent user reports the default scram_iterations. Within major versions 16-18, minor versions before PostgreSQL 18.6, 17.11, and 16.15 are affected. Versions before PostgreSQL 16 are unaffected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Make mock SCRAM authentication secrets more plausible", "url": "/docs/compare/?release=17.11#17.11-f319d2c2bdee8718"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14671", "title": "PostgreSQL refint plan cache type confusion executes arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2026-14671/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Type confusion in PostgreSQL module \"refint\" allows an object creator to execute arbitrary code as the operating system user running the database. The fix for this emerged as a non-security bug report, and the fix appear in the git repository with subject \"refint: Remove plan cache.\", without a CVE number. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "contrib module", "mentions": [{"build": "17.11", "version": "17.11", "title": "Remove the plan cache in contrib/refint", "url": "/docs/compare/?release=17.11#17.11-9677b8014f265a17"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14670", "title": "PostgreSQL plperl tied object heap buffer overflow executes arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2026-14670/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Heap buffer overflow in PostgreSQL plperl return of a tied hash allows the function owner to execute arbitrary code as the operating system user running the database, via a crafted function body. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Harden PL/Perl against \u201ctied\u201d Perl arrays and hashes", "url": "/docs/compare/?release=17.11#17.11-58243a045a5d2555"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14669", "title": "PostgreSQL to_char heap buffer overflow executes arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2026-14669/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Heap buffer overflow in PostgreSQL to_char(timestamptz) allows the party choosing the timezone to execute arbitrary code as the operating system user running the database, via a long POSIX timezone abbreviation. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Fix buffer overrun with long time zone abbreviation in to_char()", "url": "/docs/compare/?release=17.11#17.11-9aaf551ddc6d8e1b"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14668", "title": "PostgreSQL ctid type confusion in selectivity estimator discloses derivative of arbitrary read", "url": "https://www.postgresql.org/support/security/CVE-2026-14668/", "score": 8.1, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H", "description": "Type confusion regarding input of PostgreSQL ctid data type selectivity estimator allows an object creator to view a calculation derived from the value of an arbitrary 4-byte span of memory, via a chosen non-ctid input. While the calculation loses precision, substantial memory value recovery appears possible. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Make scalarineqsel() check that a constant it expects to be of type tid actually is", "url": "/docs/compare/?release=17.11#17.11-3000fb5c37bacd7b"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14666", "title": "PostgreSQL row security caching disregards role modifications", "url": "https://www.postgresql.org/support/security/CVE-2026-14666/", "score": 4.2, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N", "description": "Incomplete tracking in PostgreSQL of changes to role membership, role attributes, and database ownership allows a query to continue using cached row-level security policies after those changes require a different policy, via plan reuse. Stale policies continue until some other event invalidates the cache or connection termination ends the session. This permits a user to complete reads and modifications that were recently permitted but now forbidden. An attacker must tailor an attack to a particular application's pattern of privilege removal and role-specific row security policies. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Invalidate role-dependent cached plans after role changes", "url": "/docs/compare/?release=17.11#17.11-43977a837123cada"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14664", "title": "PostgreSQL regexp heap buffer overflow executes arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2026-14664/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Heap buffer overflow in PostgreSQL regexp allows the query author to execute arbitrary code as the operating system user running the database, via text that would not pass encoding validation. This shares heritage with CVE-2026-2006, but this case involved unanticipated data growth when round-tripped through pg_wchar. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Fix buffer overrun in regexp match/split functions", "url": "/docs/compare/?release=17.11#17.11-cb1b743a0208c3c0"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14663", "title": "PostgreSQL pgcrypto, for OpenSSL-disabled ciphers, silently encrypts to and decrypts from cleartext", "url": "https://www.postgresql.org/support/security/CVE-2026-14663/", "score": 6.5, "vector": "AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N", "description": "Cleartext storage in PostgreSQL pgcrypto disabled ciphers allows a user to recover cleartext, via direct observation of the faulty ciphertext. The OpenSSL version and OpenSSL configuration determine the disabled ciphers. If the application accepts encrypted data as input, decryption will succeed even with the wrong key. This in turn loses the modest protection from the Modification Detection Code (MDC). Affected functions are pgp_sym_encrypt, pgp_sym_decrypt, pgp_pub_encrypt, pgp_pub_decrypt, pgp_sym_encrypt_bytea, pgp_sym_decrypt_bytea, pgp_pub_encrypt_bytea, and pgp_pub_decrypt_bytea. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "contrib module", "mentions": [{"build": "17.11", "version": "17.11", "title": "Fix contrib/pgcrypto's PGP encryption to detect unsupported ciphers", "url": "/docs/compare/?release=17.11#17.11-165fa935d28df7f1"}], "evidence": "branch-matrix"}, {"id": "CVE-2026-14662", "title": "PostgreSQL tsvector and tsquery undersize allocations, via integer wraparound", "url": "https://www.postgresql.org/support/security/CVE-2026-14662/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Integer wraparound in PostgreSQL tsvector and tsquery data type functions allows an unprivileged database user to cause the server to undersize an allocation and write out-of-bounds, via crafted large inputs. This may execute arbitrary code as the operating system user running the database. These types are typically sourced from application logic, not taken from the application's user. Hence, application users attacking the database, through the application as a conduit, are unlikely. CVE-2026-6473 had fixed similar problems. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected.", "fixed": "17.11", "fixed_url": "/docs/compare/?release=17.11", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Harden tsvector and tsquery code against overly long values (both individual lexemes and total vector/query length)", "url": "/docs/compare/?release=17.11#17.11-730aec962ef92894"}], "evidence": "branch-matrix"}, {"id": "CVE-2025-8715", "title": "PostgreSQL pg_dump newline in object name executes arbitrary code in psql client and in restore target server", "url": "https://www.postgresql.org/support/security/CVE-2025-8715/", "score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "description": "Improper neutralization of newlines in pg_dump in PostgreSQL allows a user of the origin server to inject arbitrary code for restore-time execution as the client operating system account running psql to restore the dump, via psql meta-commands inside a purpose-crafted object name. The same attacks can achieve SQL injection as a superuser of the restore target server. pg_dumpall, pg_restore, and pg_upgrade are also affected. Versions before PostgreSQL 17.6, 16.10, 15.14, 14.19, and 13.22 are affected. Versions before 11.20 are unaffected. CVE-2012-0868 had fixed this class of problem, but version 11.20 reintroduced it.", "fixed": "17.6", "fixed_url": "/docs/compare/?release=17.6", "affected": "17", "component": "core server", "mentions": [{"build": "17.6", "version": "17.6", "title": "Convert newlines to spaces in names included in comments in pg_dump output", "url": "/docs/compare/?release=17.6#17.6-85269ca5c1610b49"}], "evidence": "branch-matrix"}, {"id": "CVE-2025-8714", "title": "PostgreSQL pg_dump lets superuser of origin server execute arbitrary code in psql client", "url": "https://www.postgresql.org/support/security/CVE-2025-8714/", "score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "description": "Untrusted data inclusion in pg_dump in PostgreSQL allows a malicious superuser of the origin server to inject arbitrary code for restore-time execution as the client operating system account running psql to restore the dump, via psql meta-commands. pg_dumpall is also affected. pg_restore is affected when used to generate a plain-format dump. This is similar to MySQL CVE-2024-21096. Versions before PostgreSQL 17.6, 16.10, 15.14, 14.19, and 13.22 are affected.", "fixed": "17.6", "fixed_url": "/docs/compare/?release=17.6", "affected": "17", "component": "core server", "mentions": [{"build": "17.11", "version": "17.11", "title": "Do not do backquote expansion on the argument of psql's \\unrestrict command", "url": "/docs/compare/?release=17.11#17.11-7f417b32587acff8"}, {"build": "17.6", "version": "17.6", "title": "Prevent pg_dump scripts from being used to attack the user running the restore", "url": "/docs/compare/?release=17.6#17.6-5be27cec56fb902a"}], "evidence": "branch-matrix"}, {"id": "CVE-2025-8713", "title": "PostgreSQL optimizer statistics can expose sampled data within a view, partition, or child table", "url": "https://www.postgresql.org/support/security/CVE-2025-8713/", "score": 3.1, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N", "description": "PostgreSQL optimizer statistics allow a user to read sampled data within a view that the user cannot access. Separately, statistics allow a user to read sampled data that a row security policy intended to hide. PostgreSQL maintains statistics for tables by sampling data available in columns; this data is consulted during the query planning process. Prior to this release, a user could craft a leaky operator that bypassed view access control lists (ACLs) and bypassed row security policies in partitioning or table inheritance hierarchies. Reachable statistics data notably included histograms and most-common-values lists. CVE-2017-7484 and CVE-2019-10130 intended to close this class of vulnerability, but this gap remained. Versions before PostgreSQL 17.6, 16.10, 15.14, 14.19, and 13.22 are affected.", "fixed": "17.6", "fixed_url": "/docs/compare/?release=17.6", "affected": "17", "component": "core server", "mentions": [{"build": "17.6", "version": "17.6", "title": "Tighten security checks in planner estimation functions", "url": "/docs/compare/?release=17.6#17.6-235b908f6ae5f3ee"}], "evidence": "branch-matrix"}, {"id": "CVE-2025-4207", "title": "PostgreSQL GB18030 encoding validation can read one byte past end of allocation for text that fails validation", "url": "https://www.postgresql.org/support/security/CVE-2025-4207/", "score": 5.9, "vector": "AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H", "description": "Buffer over-read in PostgreSQL GB18030 encoding validation allows a database input provider to achieve temporary denial of service on platforms where a 1-byte over-read can elicit process termination. This affects the database server and also libpq. Versions before PostgreSQL 17.5, 16.9, 15.13, 14.18, and 13.21 are affected.", "fixed": "17.5", "fixed_url": "/docs/compare/?release=17.5", "affected": "17", "component": "core server", "mentions": [{"build": "17.5", "version": "17.5", "title": "Avoid one-byte buffer overread when examining invalidly-encoded strings that are claimed to be in GB18030 encoding", "url": "/docs/compare/?release=17.5#17.5-811aed0b2b3689f8"}], "evidence": "branch-matrix"}, {"id": "CVE-2025-12818", "title": "PostgreSQL libpq undersizes allocations, via integer wraparound", "url": "https://www.postgresql.org/support/security/CVE-2025-12818/", "score": 5.9, "vector": "AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H", "description": "Integer wraparound in multiple PostgreSQL libpq client library functions allows an application input provider or network peer to cause libpq to undersize an allocation and write out-of-bounds by hundreds of megabytes. This results in a segmentation fault for the application using libpq. Versions before PostgreSQL 18.1, 17.7, 16.11, 15.15, 14.20, and 13.23 are affected.", "fixed": "17.7", "fixed_url": "/docs/compare/?release=17.7", "affected": "17", "component": "core server", "mentions": [{"build": "17.7", "version": "17.7", "title": "Avoid integer overflow in allocation-size calculations within libpq", "url": "/docs/compare/?release=17.7#17.7-a326b8fad6479f02"}], "evidence": "branch-matrix"}, {"id": "CVE-2025-12817", "title": "PostgreSQL CREATE STATISTICS does not check for schema CREATE privilege", "url": "https://www.postgresql.org/support/security/CVE-2025-12817/", "score": 3.1, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L", "description": "Missing authorization in PostgreSQL CREATE STATISTICS command allows a table owner to achieve denial of service against other CREATE STATISTICS users by creating in any schema. A later CREATE STATISTICS for the same name, from a user having the CREATE privilege, would then fail. Versions before PostgreSQL 18.1, 17.7, 16.11, 15.15, 14.20, and 13.23 are affected.", "fixed": "17.7", "fixed_url": "/docs/compare/?release=17.7", "affected": "17", "component": "core server", "mentions": [{"build": "17.7", "version": "17.7", "title": "Check for CREATE privileges on the schema in CREATE STATISTICS", "url": "/docs/compare/?release=17.7#17.7-36aab10e5138d3d1"}], "evidence": "branch-matrix"}, {"id": "CVE-2025-1094", "title": "PostgreSQL quoting APIs miss neutralizing quoting syntax in text that fails encoding validation", "url": "https://www.postgresql.org/support/security/CVE-2025-1094/", "score": 8.1, "vector": "AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H", "description": "Improper neutralization of quoting syntax in PostgreSQL libpq functions PQescapeLiteral(), PQescapeIdentifier(), PQescapeString(), and PQescapeStringConn() allows a database input provider to achieve SQL injection in certain usage patterns. Specifically, SQL injection requires the application to use the function result to construct input to psql, the PostgreSQL interactive terminal. Similarly, improper neutralization of quoting syntax in PostgreSQL command line utility programs allows a source of command line arguments to achieve SQL injection when client_encoding is BIG5 and server_encoding is one of EUC_TW or MULE_INTERNAL. Versions before PostgreSQL 17.3, 16.7, 15.11, 14.16, and 13.19 are affected.", "fixed": "17.3", "fixed_url": "/docs/compare/?release=17.3", "affected": "17", "component": "core server", "mentions": [{"build": "17.4", "version": "17.4", "title": "Improve behavior of libpq's quoting functions", "url": "/docs/compare/?release=17.4#17.4-d477ecad89a3b81e"}, {"build": "17.3", "version": "17.3", "title": "Harden PQescapeString and allied functions against invalidly-encoded input strings", "url": "/docs/compare/?release=17.3#17.3-ec56c13500d18830"}], "evidence": "branch-matrix"}, {"id": "CVE-2024-10979", "title": "PostgreSQL PL/Perl environment variable changes execute arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2024-10979/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Incorrect control of environment variables in PostgreSQL PL/Perl allows an unprivileged database user to change sensitive process environment variables (e.g. PATH ). That often suffices to enable arbitrary code execution, even if the attacker lacks a database server operating system user. Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected.\n\nThe PostgreSQL project thanks Coby Abrams for reporting this problem.", "fixed": "17.1", "fixed_url": "/docs/compare/?release=17.1", "affected": "17", "component": "core server", "mentions": [{"build": "17.1", "version": "17.1", "title": "Prevent trusted PL/Perl code from changing environment variables", "url": "/docs/compare/?release=17.1#17.1-17e0d808d28707ff"}], "evidence": "branch-matrix"}, {"id": "CVE-2024-10978", "title": "PostgreSQL SET ROLE, SET SESSION AUTHORIZATION reset to wrong user ID", "url": "https://www.postgresql.org/support/security/CVE-2024-10978/", "score": 4.2, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N", "description": "Incorrect privilege assignment in PostgreSQL allows a less-privileged application user to view or change different rows from those intended. An attack requires the application to use SET ROLE , SET SESSION AUTHORIZATION , or an equivalent feature. The problem arises when an application query uses parameters from the attacker or conveys query results to the attacker. If that query reacts to current_setting('role') or the current user ID, it may modify or return data as though the session had not used SET ROLE or SET SESSION AUTHORIZATION . The attacker does not control which incorrect user ID applies. Query text from less-privileged sources is not a concern here, because SET ROLE and SET SESSION AUTHORIZATION are not sandboxes for unvetted queries. Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected.\n\nThe PostgreSQL project thanks Tom Lane for reporting this problem.", "fixed": "17.1", "fixed_url": "/docs/compare/?release=17.1", "affected": "17", "component": "core server", "mentions": [{"build": "17.2", "version": "17.2", "title": "Restore functionality of ALTER {ROLE|DATABASE} SET role", "url": "/docs/compare/?release=17.2#17.2-d77293a82e3a14e5"}, {"build": "17.1", "version": "17.1", "title": "Fix unintended interactions between SET SESSION AUTHORIZATION and SET ROLE", "url": "/docs/compare/?release=17.1#17.1-bcd14383964f2685"}], "evidence": "branch-matrix"}, {"id": "CVE-2024-10977", "title": "PostgreSQL libpq retains an error message from man-in-the-middle", "url": "https://www.postgresql.org/support/security/CVE-2024-10977/", "score": 3.1, "vector": "AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:N", "description": "Client use of server error message in PostgreSQL allows a server not trusted under current SSL or GSS settings to furnish arbitrary non-NUL bytes to the libpq application. For example, a man-in-the-middle attacker could send a long error message that a human or screen-scraper user of psql mistakes for valid query results. This is probably not a concern for clients where the user interface unambiguously indicates the boundary between one error message and other text. Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected.\n\nThe PostgreSQL project thanks Jacob Champion for reporting this problem.", "fixed": "17.1", "fixed_url": "/docs/compare/?release=17.1", "affected": "17", "component": "client", "mentions": [{"build": "17.1", "version": "17.1", "title": "Make libpq discard error messages received during SSL or GSS protocol negotiation", "url": "/docs/compare/?release=17.1#17.1-1082f03d8cb14619"}], "evidence": "branch-matrix"}, {"id": "CVE-2024-10976", "title": "PostgreSQL row security below e.g. subqueries disregards user ID changes", "url": "https://www.postgresql.org/support/security/CVE-2024-10976/", "score": 4.2, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N", "description": "Incomplete tracking in PostgreSQL of tables with row security allows a reused query to view or change different rows from those intended. CVE-2023-2455 and CVE-2016-2193 fixed most interaction between row security and user ID changes. They missed cases where a subquery, WITH query, security invoker view, or SQL-language function references a table with a row-level security policy. This has the same consequences as the two earlier CVEs. That is to say, it leads to potentially incorrect policies being applied in cases where role-specific policies are used and a given query is planned under one role and then executed under other roles. This scenario can happen under security definer functions or when a common user and query is planned initially and then re-used across multiple SET ROLEs.\n\nApplying an incorrect policy may permit a user to complete otherwise-forbidden reads and modifications. This affects only databases that have used CREATE POLICY to define a row security policy. An attacker must tailor an attack to a particular application's pattern of query plan reuse, user ID changes, and role-specific row security policies. Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected.", "fixed": "17.1", "fixed_url": "/docs/compare/?release=17.1", "affected": "17", "component": "core server", "mentions": [{"build": "17.1", "version": "17.1", "title": "Ensure cached plans are marked as dependent on the calling role when RLS applies to a non-top-level table reference", "url": "/docs/compare/?release=17.1#17.1-4318690b9c90f7f0"}], "evidence": "branch-matrix"}, {"id": "CVE-2017-7484", "title": "selectivity estimators bypass SELECT privilege checks", "url": "https://www.postgresql.org/support/security/CVE-2017-7484/", "score": 4.3, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "description": "", "fixed": "", "fixed_url": "", "affected": "", "component": "core server", "mentions": [{"build": "17.6", "version": "17.6", "title": "Tighten security checks in planner estimation functions", "url": "/docs/compare/?release=17.6#17.6-235b908f6ae5f3ee"}], "evidence": "release-note-mention"}, {"id": "CVE-2012-0868", "title": "Line breaks in object names can be exploited to execute arbitrary SQL when reloading a pg_dump file.", "url": "https://www.postgresql.org/support/security/CVE-2012-0868/", "score": null, "vector": "", "description": "", "fixed": "", "fixed_url": "", "affected": "", "component": "", "mentions": [{"build": "17.6", "version": "17.6", "title": "Convert newlines to spaces in names included in comments in pg_dump output", "url": "/docs/compare/?release=17.6#17.6-85269ca5c1610b49"}], "evidence": "release-note-mention"}], "security_covered": true, "release_as_of": "2026-09-26", "security_as_of": "2026-09-26", "policy_url": "https://www.postgresql.org/support/versioning/", "pdfs": [{"label": "A4 PDF", "bytes": 15521293, "url": "/files/documentation/pdf/17/postgresql-17-A4.pdf"}, {"label": "US Letter PDF", "bytes": 15398150, "url": "/files/documentation/pdf/17/postgresql-17-US.pdf"}], "query": "", "selected_kind": "", "branches": [{"branch": "20", "url": "/wiki/versions/20/", "state": "devel", "state_label": "Development", "tag": "devel", "build": "20devel", "first_release": "", "end_of_life": "", "latest_release_date": "", "manual_url": "/docs/devel/index.html", "manual_slug": "devel", "manual_pages": 1162, "manual_loaded_at": "2026-09-28T13:12:51.679520", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "19", "url": "/wiki/versions/19/", "state": "beta", "state_label": "Preview", "tag": "beta 4", "build": "19beta4", "first_release": "", "end_of_life": "", "latest_release_date": "", "manual_url": "/docs/19/index.html", "manual_slug": "19", "manual_pages": 1160, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 1, "entry_count": 198, "initial": {"version": "19.0", "build": "19beta4", "status": "preview", "date": "", "source_as_of": "2026-09-14", "url": "/docs/compare/?release=19.0", "manual_url": "/docs/19/release-19.html", "source_url": "/docs/release/19.0/", "entry_count": 198, "categories": {"compatibility": 17, "feature": 161, "performance": 20}, "compatibility_count": 17, "cves": [], "cve_count": 0}, "latest": {"version": "19.0", "build": "19beta4", "status": "preview", "date": "", "source_as_of": "2026-09-14", "url": "/docs/compare/?release=19.0", "manual_url": "/docs/19/release-19.html", "source_url": "/docs/release/19.0/", "entry_count": 198, "categories": {"compatibility": 17, "feature": 161, "performance": 20}, "compatibility_count": 17, "cves": [], "cve_count": 0}, "comparison_url": ""}, {"branch": "18", "url": "/wiki/versions/18/", "state": "current", "state_label": "Current stable", "tag": "current", "build": "18.6", "first_release": "2025-09-25", "end_of_life": "2030-11-14", "latest_release_date": "2026-08-13", "manual_url": "/docs/18/index.html", "manual_slug": "18", "manual_pages": 1151, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 6, "entry_count": 561, "initial": {"version": "18.0", "build": "18.0", "status": "stable", "date": "2025-09-25", "source_as_of": "", "url": "/docs/compare/?release=18.0", "manual_url": "/docs/18/release-18.html", "source_url": "/docs/release/18.0/", "entry_count": 210, "categories": {"compatibility": 11, "feature": 188, "performance": 10, "bugfix": 1}, "compatibility_count": 11, "cves": [], "cve_count": 0}, "latest": {"version": "18.6", "build": "18.6", "status": "stable", "date": "2026-08-13", "source_as_of": "", "url": "/docs/compare/?release=18.6", "manual_url": "/docs/18/release-18-6.html", "source_url": "/docs/release/18.6/", "entry_count": 140, "categories": {"security": 29, "improvement": 46, "bugfix": 65}, "compatibility_count": 0, "cves": ["CVE-2025-8714", "CVE-2026-14662", "CVE-2026-14663", "CVE-2026-14664", "CVE-2026-14666", "CVE-2026-14668", "CVE-2026-14669", "CVE-2026-14670", "CVE-2026-14671", "CVE-2026-14672", "CVE-2026-14673", "CVE-2026-14676", "CVE-2026-14677", "CVE-2026-14678", "CVE-2026-14679", "CVE-2026-14680", "CVE-2026-14681", "CVE-2026-15741", "CVE-2026-15742", "CVE-2026-16238", "CVE-2026-16239", "CVE-2026-16241", "CVE-2026-18024", "CVE-2026-18408", "CVE-2026-19385", "CVE-2026-6464", "CVE-2026-6469", "CVE-2026-6470", "CVE-2026-6471", "CVE-2026-6473", "CVE-2026-6637"], "cve_count": 31}, "comparison_url": "/docs/compare/?from=18.0&to=18.6"}, {"branch": "17", "url": "/wiki/versions/17/", "state": "supported", "state_label": "Supported", "tag": "", "build": "17.11", "first_release": "2024-09-26", "end_of_life": "2029-11-08", "latest_release_date": "2026-08-13", "manual_url": "/docs/17/index.html", "manual_slug": "17", "manual_pages": 1146, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 12, "entry_count": 727, "initial": {"version": "17.0", "build": "17.0", "status": "stable", "date": "2024-09-26", "source_as_of": "", "url": "/docs/compare/?release=17.0", "manual_url": "/docs/17/release-17.html", "source_url": "/docs/release/17.0/", "entry_count": 182, "categories": {"compatibility": 17, "feature": 154, "bugfix": 2, "performance": 9}, "compatibility_count": 17, "cves": [], "cve_count": 0}, "latest": {"version": "17.11", "build": "17.11", "status": "stable", "date": "2026-08-13", "source_as_of": "", "url": "/docs/compare/?release=17.11", "manual_url": "/docs/17/release-17-11.html", "source_url": "/docs/release/17.11/", "entry_count": 109, "categories": {"security": 29, "bugfix": 49, "improvement": 31}, "compatibility_count": 0, "cves": ["CVE-2025-8714", "CVE-2026-14662", "CVE-2026-14663", "CVE-2026-14664", "CVE-2026-14666", "CVE-2026-14668", "CVE-2026-14669", "CVE-2026-14670", "CVE-2026-14671", "CVE-2026-14672", "CVE-2026-14673", "CVE-2026-14676", "CVE-2026-14677", "CVE-2026-14678", "CVE-2026-14679", "CVE-2026-14680", "CVE-2026-14681", "CVE-2026-15741", "CVE-2026-15742", "CVE-2026-16238", "CVE-2026-16239", "CVE-2026-16241", "CVE-2026-18024", "CVE-2026-18408", "CVE-2026-19385", "CVE-2026-6464", "CVE-2026-6469", "CVE-2026-6470", "CVE-2026-6471", "CVE-2026-6473", "CVE-2026-6637"], "cve_count": 31}, "comparison_url": "/docs/compare/?from=17.0&to=17.11"}, {"branch": "16", "url": "/wiki/versions/16/", "state": "supported", "state_label": "Supported", "tag": "", "build": "16.15", "first_release": "2023-09-14", "end_of_life": "2028-11-09", "latest_release_date": "2026-08-13", "manual_url": "/docs/16/index.html", "manual_slug": "16", "manual_pages": 1172, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 16, "entry_count": 930, "initial": {"version": "16.0", "build": "16.0", "status": "stable", "date": "2023-09-14", "source_as_of": "", "url": "/docs/compare/?release=16.0", "manual_url": "/docs/16/release-16.html", "source_url": "/docs/release/16.0/", "entry_count": 206, "categories": {"compatibility": 13, "feature": 175, "performance": 15, "bugfix": 3}, "compatibility_count": 13, "cves": [], "cve_count": 0}, "latest": {"version": "16.15", "build": "16.15", "status": "stable", "date": "2026-08-13", "source_as_of": "", "url": "/docs/compare/?release=16.15", "manual_url": "/docs/16/release-16-15.html", "source_url": "/docs/release/16.15/", "entry_count": 98, "categories": {"security": 29, "bugfix": 42, "improvement": 27}, "compatibility_count": 0, "cves": ["CVE-2025-8714", "CVE-2026-14662", "CVE-2026-14663", "CVE-2026-14664", "CVE-2026-14666", "CVE-2026-14668", "CVE-2026-14669", "CVE-2026-14670", "CVE-2026-14671", "CVE-2026-14672", "CVE-2026-14673", "CVE-2026-14676", "CVE-2026-14677", "CVE-2026-14678", "CVE-2026-14679", "CVE-2026-14680", "CVE-2026-14681", "CVE-2026-15741", "CVE-2026-15742", "CVE-2026-16238", "CVE-2026-16239", "CVE-2026-16241", "CVE-2026-18024", "CVE-2026-18408", "CVE-2026-19385", "CVE-2026-6464", "CVE-2026-6469", "CVE-2026-6470", "CVE-2026-6471", "CVE-2026-6473", "CVE-2026-6637"], "cve_count": 31}, "comparison_url": "/docs/compare/?from=16.0&to=16.15"}, {"branch": "15", "url": "/wiki/versions/15/", "state": "supported", "state_label": "Supported", "tag": "", "build": "15.19", "first_release": "2022-10-13", "end_of_life": "2027-11-11", "latest_release_date": "2026-08-13", "manual_url": "/docs/15/index.html", "manual_slug": "15", "manual_pages": 1171, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 20, "entry_count": 1046, "initial": {"version": "15.0", "build": "15.0", "status": "stable", "date": "2022-10-13", "source_as_of": "", "url": "/docs/compare/?release=15.0", "manual_url": "/docs/15/release-15.html", "source_url": "/docs/release/15.0/", "entry_count": 184, "categories": {"security": 1, "compatibility": 30, "feature": 135, "bugfix": 3, "performance": 15}, "compatibility_count": 31, "cves": ["CVE-2018-1058"], "cve_count": 1}, "latest": {"version": "15.19", "build": "15.19", "status": "stable", "date": "2026-08-13", "source_as_of": "", "url": "/docs/compare/?release=15.19", "manual_url": "/docs/15/release-15-19.html", "source_url": "/docs/release/15.19/", "entry_count": 90, "categories": {"security": 29, "bugfix": 36, "improvement": 25}, "compatibility_count": 0, "cves": ["CVE-2025-8714", "CVE-2026-14662", "CVE-2026-14663", "CVE-2026-14664", "CVE-2026-14666", "CVE-2026-14668", "CVE-2026-14669", "CVE-2026-14670", "CVE-2026-14671", "CVE-2026-14672", "CVE-2026-14673", "CVE-2026-14676", "CVE-2026-14677", "CVE-2026-14678", "CVE-2026-14679", "CVE-2026-14680", "CVE-2026-14681", "CVE-2026-15741", "CVE-2026-15742", "CVE-2026-16238", "CVE-2026-16239", "CVE-2026-16241", "CVE-2026-18024", "CVE-2026-18408", "CVE-2026-19385", "CVE-2026-6464", "CVE-2026-6469", "CVE-2026-6470", "CVE-2026-6471", "CVE-2026-6473", "CVE-2026-6637"], "cve_count": 31}, "comparison_url": "/docs/compare/?from=15.0&to=15.19"}, {"branch": "14", "url": "/wiki/versions/14/", "state": "supported", "state_label": "Supported", "tag": "", "build": "14.24", "first_release": "2021-09-30", "end_of_life": "2026-11-12", "latest_release_date": "2026-08-13", "manual_url": "/docs/14/index.html", "manual_slug": "14", "manual_pages": 1161, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 25, "entry_count": 1206, "initial": {"version": "14.0", "build": "14.0", "status": "stable", "date": "2021-09-30", "source_as_of": "", "url": "/docs/compare/?release=14.0", "manual_url": "/docs/14/release-14.html", "source_url": "/docs/release/14.0/", "entry_count": 220, "categories": {"compatibility": 27, "feature": 178, "performance": 13, "bugfix": 2}, "compatibility_count": 27, "cves": [], "cve_count": 0}, "latest": {"version": "14.24", "build": "14.24", "status": "stable", "date": "2026-08-13", "source_as_of": "", "url": "/docs/compare/?release=14.24", "manual_url": "/docs/14/release-14-24.html", "source_url": "/docs/release/14.24/", "entry_count": 83, "categories": {"security": 29, "bugfix": 31, "improvement": 23}, "compatibility_count": 0, "cves": ["CVE-2025-8714", "CVE-2026-14662", "CVE-2026-14663", "CVE-2026-14664", "CVE-2026-14666", "CVE-2026-14668", "CVE-2026-14669", "CVE-2026-14670", "CVE-2026-14671", "CVE-2026-14672", "CVE-2026-14673", "CVE-2026-14676", "CVE-2026-14677", "CVE-2026-14678", "CVE-2026-14679", "CVE-2026-14680", "CVE-2026-14681", "CVE-2026-15741", "CVE-2026-15742", "CVE-2026-16238", "CVE-2026-16239", "CVE-2026-16241", "CVE-2026-18024", "CVE-2026-18408", "CVE-2026-19385", "CVE-2026-6464", "CVE-2026-6469", "CVE-2026-6470", "CVE-2026-6471", "CVE-2026-6473", "CVE-2026-6637"], "cve_count": 31}, "comparison_url": "/docs/compare/?from=14.0&to=14.24"}, {"branch": "13", "url": "/wiki/versions/13/", "state": "eol", "state_label": "End of life", "tag": "", "build": "13.23", "first_release": "2020-09-24", "end_of_life": "2025-11-13", "latest_release_date": "2025-11-13", "manual_url": "/docs/13/index.html", "manual_slug": "13", "manual_pages": 1142, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 24, "entry_count": 1164, "initial": {"version": "13.0", "build": "13.0", "status": "stable", "date": "2020-09-24", "source_as_of": "", "url": "/docs/compare/?release=13.0", "manual_url": "/docs/13/release-13.html", "source_url": "/docs/release/13.0/", "entry_count": 178, "categories": {"compatibility": 15, "feature": 143, "performance": 16, "bugfix": 4}, "compatibility_count": 15, "cves": [], "cve_count": 0}, "latest": {"version": "13.23", "build": "13.23", "status": "stable", "date": "2025-11-13", "source_as_of": "", "url": "/docs/compare/?release=13.23", "manual_url": "/docs/13/release-13-23.html", "source_url": "/docs/release/13.23/", "entry_count": 43, "categories": {"security": 2, "bugfix": 22, "improvement": 19}, "compatibility_count": 0, "cves": ["CVE-2025-12817", "CVE-2025-12818"], "cve_count": 2}, "comparison_url": "/docs/compare/?from=13.0&to=13.23"}, {"branch": "12", "url": "/wiki/versions/12/", "state": "eol", "state_label": "End of life", "tag": "", "build": "12.22", "first_release": "2019-10-03", "end_of_life": "2024-11-21", "latest_release_date": "2024-11-21", "manual_url": "/docs/12/index.html", "manual_slug": "12", "manual_pages": 1133, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 23, "entry_count": 1181, "initial": {"version": "12.0", "build": "12.0", "status": "stable", "date": "2019-10-03", "source_as_of": "", "url": "/docs/compare/?release=12.0", "manual_url": "/docs/12/release-12.html", "source_url": "/docs/release/12.0/", "entry_count": 180, "categories": {"compatibility": 23, "performance": 14, "feature": 139, "bugfix": 4}, "compatibility_count": 23, "cves": [], "cve_count": 0}, "latest": {"version": "12.22", "build": "12.22", "status": "stable", "date": "2024-11-21", "source_as_of": "", "url": "/docs/compare/?release=12.22", "manual_url": "/docs/12/release-12-22.html", "source_url": "/docs/release/12.22/", "entry_count": 1, "categories": {"security": 1}, "compatibility_count": 0, "cves": ["CVE-2024-10978"], "cve_count": 1}, "comparison_url": "/docs/compare/?from=12.0&to=12.22"}, {"branch": "11", "url": "/wiki/versions/11/", "state": "eol", "state_label": "End of life", "tag": "", "build": "11.22", "first_release": "2018-10-18", "end_of_life": "2023-11-09", "latest_release_date": "2023-11-09", "manual_url": "/docs/11/index.html", "manual_slug": "11", "manual_pages": 1125, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 23, "entry_count": 1141, "initial": {"version": "11.0", "build": "11.0", "status": "stable", "date": "2018-10-18", "source_as_of": "", "url": "/docs/compare/?release=11.0", "manual_url": "/docs/11/release-11.html", "source_url": "/docs/release/11.0/", "entry_count": 170, "categories": {"compatibility": 20, "feature": 134, "performance": 15, "bugfix": 1}, "compatibility_count": 20, "cves": [], "cve_count": 0}, "latest": {"version": "11.22", "build": "11.22", "status": "stable", "date": "2023-11-09", "source_as_of": "", "url": "/docs/compare/?release=11.22", "manual_url": "/docs/11/release-11-22.html", "source_url": "/docs/release/11.22/", "entry_count": 31, "categories": {"security": 3, "bugfix": 10, "improvement": 18}, "compatibility_count": 0, "cves": ["CVE-2023-5868", "CVE-2023-5869", "CVE-2023-5870"], "cve_count": 3}, "comparison_url": "/docs/compare/?from=11.0&to=11.22"}, {"branch": "10", "url": "/wiki/versions/10/", "state": "eol", "state_label": "End of life", "tag": "", "build": "10.23", "first_release": "2017-10-05", "end_of_life": "2022-11-10", "latest_release_date": "2022-11-10", "manual_url": "/docs/10/index.html", "manual_slug": "10", "manual_pages": 1085, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 24, "entry_count": 1140, "initial": {"version": "10.0", "build": "10.0", "status": "stable", "date": "2017-10-05", "source_as_of": "", "url": "/docs/compare/?release=10.0", "manual_url": "/docs/10/release-10.html", "source_url": "/docs/release/10.0/", "entry_count": 189, "categories": {"compatibility": 27, "feature": 148, "performance": 12, "bugfix": 2}, "compatibility_count": 27, "cves": [], "cve_count": 0}, "latest": {"version": "10.23", "build": "10.23", "status": "stable", "date": "2022-11-10", "source_as_of": "", "url": "/docs/compare/?release=10.23", "manual_url": "/docs/10/release-10-23.html", "source_url": "/docs/release/10.23/", "entry_count": 29, "categories": {"bugfix": 13, "improvement": 16}, "compatibility_count": 0, "cves": [], "cve_count": 0}, "comparison_url": "/docs/compare/?from=10.0&to=10.23"}, {"branch": "9.6", "url": "/wiki/versions/9.6/", "state": "eol", "state_label": "End of life", "tag": "", "build": "9.6.24", "first_release": "2016-09-29", "end_of_life": "2021-11-11", "latest_release_date": "2021-11-11", "manual_url": "/docs/9.6/index.html", "manual_slug": "9.6", "manual_pages": 1046, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 25, "entry_count": 1105, "initial": {"version": "9.6.0", "build": "9.6.0", "status": "stable", "date": "2016-09-29", "source_as_of": "", "url": "/docs/compare/?release=9.6.0", "manual_url": "/docs/9.6/release-9-6.html", "source_url": "/docs/release/9.6.0/", "entry_count": 214, "categories": {"compatibility": 13, "feature": 169, "performance": 26, "bugfix": 6}, "compatibility_count": 13, "cves": [], "cve_count": 0}, "latest": {"version": "9.6.24", "build": "9.6.24", "status": "stable", "date": "2021-11-11", "source_as_of": "", "url": "/docs/compare/?release=9.6.24", "manual_url": "/docs/9.6/release-9-6-24.html", "source_url": "/docs/release/9.6.24/", "entry_count": 40, "categories": {"security": 2, "bugfix": 18, "improvement": 19, "performance": 1}, "compatibility_count": 0, "cves": ["CVE-2021-23214", "CVE-2021-23222"], "cve_count": 2}, "comparison_url": "/docs/compare/?from=9.6.0&to=9.6.24"}, {"branch": "9.5", "url": "/wiki/versions/9.5/", "state": "eol", "state_label": "End of life", "tag": "", "build": "9.5.25", "first_release": "2016-01-07", "end_of_life": "2021-02-11", "latest_release_date": "2021-02-11", "manual_url": "/docs/9.5/index.html", "manual_slug": "9.5", "manual_pages": 1029, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 26, "entry_count": 1026, "initial": {"version": "9.5.0", "build": "9.5.0", "status": "stable", "date": "2016-01-07", "source_as_of": "", "url": "/docs/compare/?release=9.5.0", "manual_url": "/docs/9.5/release-9-5.html", "source_url": "/docs/release/9.5.0/", "entry_count": 193, "categories": {"compatibility": 12, "feature": 163, "performance": 17, "bugfix": 1}, "compatibility_count": 12, "cves": [], "cve_count": 0}, "latest": {"version": "9.5.25", "build": "9.5.25", "status": "stable", "date": "2021-02-11", "source_as_of": "", "url": "/docs/compare/?release=9.5.25", "manual_url": "/docs/9.5/release-9-5-25.html", "source_url": "/docs/release/9.5.25/", "entry_count": 32, "categories": {"bugfix": 15, "improvement": 17}, "compatibility_count": 0, "cves": [], "cve_count": 0}, "comparison_url": "/docs/compare/?from=9.5.0&to=9.5.25"}, {"branch": "9.4", "url": "/wiki/versions/9.4/", "state": "eol", "state_label": "End of life", "tag": "", "build": "9.4.26", "first_release": "2014-12-18", "end_of_life": "2020-02-13", "latest_release_date": "2020-02-13", "manual_url": "/docs/9.4/index.html", "manual_slug": "9.4", "manual_pages": 1002, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 27, "entry_count": 1007, "initial": {"version": "9.4.0", "build": "9.4.0", "status": "stable", "date": "2014-12-18", "source_as_of": "", "url": "/docs/compare/?release=9.4.0", "manual_url": "/docs/9.4/release-9-4.html", "source_url": "/docs/release/9.4.0/", "entry_count": 211, "categories": {"compatibility": 22, "feature": 171, "bugfix": 6, "performance": 12}, "compatibility_count": 22, "cves": [], "cve_count": 0}, "latest": {"version": "9.4.26", "build": "9.4.26", "status": "stable", "date": "2020-02-13", "source_as_of": "", "url": "/docs/compare/?release=9.4.26", "manual_url": "/docs/9.4/release-9-4-26.html", "source_url": "/docs/release/9.4.26/", "entry_count": 28, "categories": {"improvement": 12, "bugfix": 15, "performance": 1}, "compatibility_count": 0, "cves": [], "cve_count": 0}, "comparison_url": "/docs/compare/?from=9.4.0&to=9.4.26"}, {"branch": "9.3", "url": "/wiki/versions/9.3/", "state": "eol", "state_label": "End of life", "tag": "", "build": "9.3.25", "first_release": "2013-09-09", "end_of_life": "2018-11-08", "latest_release_date": "2018-11-08", "manual_url": "/docs/9.3/index.html", "manual_slug": "9.3", "manual_pages": 1265, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 26, "entry_count": 968, "initial": {"version": "9.3.0", "build": "9.3.0", "status": "stable", "date": "2013-09-09", "source_as_of": "", "url": "/docs/compare/?release=9.3.0", "manual_url": "/docs/9.3/release-9-3.html", "source_url": "/docs/release/9.3.0/", "entry_count": 177, "categories": {"compatibility": 10, "feature": 148, "performance": 13, "bugfix": 6}, "compatibility_count": 10, "cves": [], "cve_count": 0}, "latest": {"version": "9.3.25", "build": "9.3.25", "status": "stable", "date": "2018-11-08", "source_as_of": "", "url": "/docs/compare/?release=9.3.25", "manual_url": "/docs/9.3/release-9-3-25.html", "source_url": "/docs/release/9.3.25/", "entry_count": 35, "categories": {"bugfix": 17, "improvement": 18}, "compatibility_count": 0, "cves": [], "cve_count": 0}, "comparison_url": "/docs/compare/?from=9.3.0&to=9.3.25"}, {"branch": "9.2", "url": "/wiki/versions/9.2/", "state": "eol", "state_label": "End of life", "tag": "", "build": "9.2.24", "first_release": "2012-09-10", "end_of_life": "2017-11-09", "latest_release_date": "2017-11-09", "manual_url": "/docs/9.2/index.html", "manual_slug": "9.2", "manual_pages": 1218, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 25, "entry_count": 968, "initial": {"version": "9.2.0", "build": "9.2.0", "status": "stable", "date": "2012-09-10", "source_as_of": "", "url": "/docs/compare/?release=9.2.0", "manual_url": "/docs/9.2/release-9-2.html", "source_url": "/docs/release/9.2.0/", "entry_count": 238, "categories": {"compatibility": 23, "feature": 197, "performance": 12, "bugfix": 6}, "compatibility_count": 23, "cves": [], "cve_count": 0}, "latest": {"version": "9.2.24", "build": "9.2.24", "status": "stable", "date": "2017-11-09", "source_as_of": "", "url": "/docs/compare/?release=9.2.24", "manual_url": "/docs/9.2/release-9-2-24.html", "source_url": "/docs/release/9.2.24/", "entry_count": 13, "categories": {"security": 1, "improvement": 7, "bugfix": 5}, "compatibility_count": 0, "cves": ["CVE-2017-12172"], "cve_count": 1}, "comparison_url": "/docs/compare/?from=9.2.0&to=9.2.24"}, {"branch": "9.1", "url": "/wiki/versions/9.1/", "state": "eol", "state_label": "End of life", "tag": "", "build": "9.1.24", "first_release": "2011-09-12", "end_of_life": "2016-10-27", "latest_release_date": "2016-10-27", "manual_url": "/docs/9.1/index.html", "manual_slug": "9.1", "manual_pages": 1165, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 25, "entry_count": 895, "initial": {"version": "9.1.0", "build": "9.1.0", "status": "stable", "date": "2011-09-12", "source_as_of": "", "url": "/docs/compare/?release=9.1.0", "manual_url": "/docs/9.1/release-9-1.html", "source_url": "/docs/release/9.1.0/", "entry_count": 203, "categories": {"compatibility": 17, "feature": 174, "performance": 3, "bugfix": 9}, "compatibility_count": 17, "cves": [], "cve_count": 0}, "latest": {"version": "9.1.24", "build": "9.1.24", "status": "stable", "date": "2016-10-27", "source_as_of": "", "url": "/docs/compare/?release=9.1.24", "manual_url": "/docs/9.1/release-9-1-24.html", "source_url": "/docs/release/9.1.24/", "entry_count": 13, "categories": {"bugfix": 7, "improvement": 6}, "compatibility_count": 0, "cves": [], "cve_count": 0}, "comparison_url": "/docs/compare/?from=9.1.0&to=9.1.24"}, {"branch": "9.0", "url": "/wiki/versions/9.0/", "state": "eol", "state_label": "End of life", "tag": "", "build": "9.0.23", "first_release": "2010-09-20", "end_of_life": "2015-10-08", "latest_release_date": "2015-10-08", "manual_url": "/docs/9.0/index.html", "manual_slug": "9.0", "manual_pages": 1086, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 24, "entry_count": 850, "initial": {"version": "9.0.0", "build": "9.0.0", "status": "stable", "date": "2010-09-20", "source_as_of": "", "url": "/docs/compare/?release=9.0.0", "manual_url": "/docs/9.0/release-9-0.html", "source_url": "/docs/release/9.0.0/", "entry_count": 237, "categories": {"compatibility": 20, "feature": 206, "performance": 6, "bugfix": 5}, "compatibility_count": 20, "cves": [], "cve_count": 0}, "latest": {"version": "9.0.23", "build": "9.0.23", "status": "stable", "date": "2015-10-08", "source_as_of": "", "url": "/docs/compare/?release=9.0.23", "manual_url": "/docs/9.0/release-9-0-23.html", "source_url": "/docs/release/9.0.23/", "entry_count": 47, "categories": {"security": 1, "bugfix": 25, "improvement": 21}, "compatibility_count": 0, "cves": ["CVE-2015-5288"], "cve_count": 1}, "comparison_url": "/docs/compare/?from=9.0.0&to=9.0.23"}, {"branch": "8.4", "url": "/wiki/versions/8.4/", "state": "eol", "state_label": "End of life", "tag": "", "build": "8.4.22", "first_release": "2009-07-01", "end_of_life": "2014-07-24", "latest_release_date": "2014-07-24", "manual_url": "/docs/8.4/index.html", "manual_slug": "8.4", "manual_pages": 1029, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "8.3", "url": "/wiki/versions/8.3/", "state": "eol", "state_label": "End of life", "tag": "", "build": "8.3.23", "first_release": "2008-02-04", "end_of_life": "2013-02-07", "latest_release_date": "2013-02-07", "manual_url": "/docs/8.3/index.html", "manual_slug": "8.3", "manual_pages": 974, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "8.2", "url": "/wiki/versions/8.2/", "state": "eol", "state_label": "End of life", "tag": "", "build": "8.2.23", "first_release": "2006-12-05", "end_of_life": "2011-12-05", "latest_release_date": "2011-12-05", "manual_url": "/docs/8.2/index.html", "manual_slug": "8.2", "manual_pages": 843, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "8.1", "url": "/wiki/versions/8.1/", "state": "eol", "state_label": "End of life", "tag": "", "build": "8.1.23", "first_release": "2005-11-08", "end_of_life": "2010-11-08", "latest_release_date": "2010-12-16", "manual_url": "/docs/8.1/index.html", "manual_slug": "8.1", "manual_pages": 730, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "8.0", "url": "/wiki/versions/8.0/", "state": "eol", "state_label": "End of life", "tag": "", "build": "8.0.26", "first_release": "2005-01-19", "end_of_life": "2010-10-01", "latest_release_date": "2010-10-04", "manual_url": "/docs/8.0/index.html", "manual_slug": "8.0", "manual_pages": 664, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "7.4", "url": "/wiki/versions/7.4/", "state": "eol", "state_label": "End of life", "tag": "", "build": "7.4.30", "first_release": "2003-11-17", "end_of_life": "2010-10-01", "latest_release_date": "2010-10-04", "manual_url": "/docs/7.4/index.html", "manual_slug": "7.4", "manual_pages": 644, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "7.3", "url": "/wiki/versions/7.3/", "state": "eol", "state_label": "End of life", "tag": "", "build": "7.3.21", "first_release": "2002-11-27", "end_of_life": "2007-11-27", "latest_release_date": "2008-01-07", "manual_url": "/docs/7.3/index.html", "manual_slug": "7.3", "manual_pages": 616, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "7.2", "url": "/wiki/versions/7.2/", "state": "eol", "state_label": "End of life", "tag": "", "build": "7.2.8", "first_release": "2002-02-04", "end_of_life": "2007-02-04", "latest_release_date": "2005-05-09", "manual_url": "/docs/7.2/index.html", "manual_slug": "7.2", "manual_pages": 552, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "7.1", "url": "/wiki/versions/7.1/", "state": "eol", "state_label": "End of life", "tag": "", "build": "7.1.3", "first_release": "2001-04-13", "end_of_life": "2006-04-13", "latest_release_date": "2001-08-17", "manual_url": "/docs/7.1/postgres.html", "manual_slug": "7.1", "manual_pages": 488, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "7.0", "url": "/wiki/versions/7.0/", "state": "eol", "state_label": "End of life", "tag": "", "build": "7.0.3", "first_release": "2000-05-08", "end_of_life": "2005-05-08", "latest_release_date": "2000-11-12", "manual_url": "/docs/7.0/postgres.htm", "manual_slug": "7.0", "manual_pages": 411, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "6.5", "url": "/wiki/versions/6.5/", "state": "eol", "state_label": "End of life", "tag": "", "build": "6.5.3", "first_release": "1999-06-09", "end_of_life": "2004-06-09", "latest_release_date": "1999-11-04", "manual_url": "/docs/6.5/postgres.htm", "manual_slug": "6.5", "manual_pages": 370, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "6.4", "url": "/wiki/versions/6.4/", "state": "eol", "state_label": "End of life", "tag": "", "build": "6.4.2", "first_release": "1998-10-30", "end_of_life": "2003-10-30", "latest_release_date": "1999-01-03", "manual_url": "/docs/6.4/postgres.htm", "manual_slug": "6.4", "manual_pages": 340, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "6.3", "url": "/wiki/versions/6.3/", "state": "eol", "state_label": "End of life", "tag": "", "build": "6.3.2", "first_release": "1998-03-01", "end_of_life": "2003-03-01", "latest_release_date": "", "manual_url": "/docs/6.3/book01.htm", "manual_slug": "6.3", "manual_pages": 225, "manual_loaded_at": "2026-09-27T00:10:47.078613", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}]}