{"format": 1, "version": {"branch": "9.6", "url": "/wiki/versions/9.6/", "state": "eol", "state_label": "\u5df2\u505c\u6b62\u652f\u6301", "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": 975, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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"}, "releases": [{"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}, {"version": "9.6.23", "build": "9.6.23", "status": "stable", "date": "2021-08-12", "source_as_of": "", "url": "/docs/compare/?release=9.6.23", "manual_url": "/docs/9.6/release-9-6-23.html", "source_url": "/docs/release/9.6.23/", "entry_count": 47, "categories": {"security": 2, "improvement": 28, "bugfix": 16, "performance": 1}, "compatibility_count": 0, "cves": ["CVE-2006-2313", "CVE-2021-3449"], "cve_count": 2}, {"version": "9.6.22", "build": "9.6.22", "status": "stable", "date": "2021-05-13", "source_as_of": "", "url": "/docs/compare/?release=9.6.22", "manual_url": "/docs/9.6/release-9-6-22.html", "source_url": "/docs/release/9.6.22/", "entry_count": 23, "categories": {"security": 2, "improvement": 8, "bugfix": 13}, "compatibility_count": 0, "cves": ["CVE-2021-32027", "CVE-2021-32028"], "cve_count": 2}, {"version": "9.6.21", "build": "9.6.21", "status": "stable", "date": "2021-02-11", "source_as_of": "", "url": "/docs/compare/?release=9.6.21", "manual_url": "/docs/9.6/release-9-6-21.html", "source_url": "/docs/release/9.6.21/", "entry_count": 36, "categories": {"bugfix": 18, "improvement": 18}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"version": "9.6.20", "build": "9.6.20", "status": "stable", "date": "2020-11-12", "source_as_of": "", "url": "/docs/compare/?release=9.6.20", "manual_url": "/docs/9.6/release-9-6-20.html", "source_url": "/docs/release/9.6.20/", "entry_count": 36, "categories": {"security": 4, "improvement": 22, "bugfix": 10}, "compatibility_count": 0, "cves": ["CVE-2020-25694", "CVE-2020-25695", "CVE-2020-25696"], "cve_count": 3}, {"version": "9.6.19", "build": "9.6.19", "status": "stable", "date": "2020-08-13", "source_as_of": "", "url": "/docs/compare/?release=9.6.19", "manual_url": "/docs/9.6/release-9-6-19.html", "source_url": "/docs/release/9.6.19/", "entry_count": 27, "categories": {"security": 1, "bugfix": 13, "improvement": 13}, "compatibility_count": 0, "cves": ["CVE-2018-1058", "CVE-2020-14350"], "cve_count": 2}, {"version": "9.6.18", "build": "9.6.18", "status": "stable", "date": "2020-05-14", "source_as_of": "", "url": "/docs/compare/?release=9.6.18", "manual_url": "/docs/9.6/release-9-6-18.html", "source_url": "/docs/release/9.6.18/", "entry_count": 38, "categories": {"improvement": 20, "bugfix": 18}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"version": "9.6.17", "build": "9.6.17", "status": "stable", "date": "2020-02-13", "source_as_of": "", "url": "/docs/compare/?release=9.6.17", "manual_url": "/docs/9.6/release-9-6-17.html", "source_url": "/docs/release/9.6.17/", "entry_count": 33, "categories": {"security": 1, "improvement": 14, "bugfix": 17, "performance": 1}, "compatibility_count": 0, "cves": ["CVE-2020-1720"], "cve_count": 1}, {"version": "9.6.16", "build": "9.6.16", "status": "stable", "date": "2019-11-14", "source_as_of": "", "url": "/docs/compare/?release=9.6.16", "manual_url": "/docs/9.6/release-9-6-16.html", "source_url": "/docs/release/9.6.16/", "entry_count": 53, "categories": {"bugfix": 21, "improvement": 32}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"version": "9.6.15", "build": "9.6.15", "status": "stable", "date": "2019-08-08", "source_as_of": "", "url": "/docs/compare/?release=9.6.15", "manual_url": "/docs/9.6/release-9-6-15.html", "source_url": "/docs/release/9.6.15/", "entry_count": 26, "categories": {"security": 1, "bugfix": 10, "improvement": 15}, "compatibility_count": 0, "cves": ["CVE-2007-2138", "CVE-2019-10208"], "cve_count": 2}, {"version": "9.6.14", "build": "9.6.14", "status": "stable", "date": "2019-06-20", "source_as_of": "", "url": "/docs/compare/?release=9.6.14", "manual_url": "/docs/9.6/release-9-6-14.html", "source_url": "/docs/release/9.6.14/", "entry_count": 17, "categories": {"bugfix": 11, "improvement": 6}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"version": "9.6.13", "build": "9.6.13", "status": "stable", "date": "2019-05-09", "source_as_of": "", "url": "/docs/compare/?release=9.6.13", "manual_url": "/docs/9.6/release-9-6-13.html", "source_url": "/docs/release/9.6.13/", "entry_count": 33, "categories": {"security": 1, "bugfix": 18, "improvement": 13, "performance": 1}, "compatibility_count": 0, "cves": ["CVE-2017-7484", "CVE-2019-10130"], "cve_count": 2}, {"version": "9.6.12", "build": "9.6.12", "status": "stable", "date": "2019-02-14", "source_as_of": "", "url": "/docs/compare/?release=9.6.12", "manual_url": "/docs/9.6/release-9-6-12.html", "source_url": "/docs/release/9.6.12/", "entry_count": 44, "categories": {"bugfix": 24, "improvement": 20}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"version": "9.6.11", "build": "9.6.11", "status": "stable", "date": "2018-11-08", "source_as_of": "", "url": "/docs/compare/?release=9.6.11", "manual_url": "/docs/9.6/release-9-6-11.html", "source_url": "/docs/release/9.6.11/", "entry_count": 57, "categories": {"bugfix": 27, "improvement": 30}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"version": "9.6.10", "build": "9.6.10", "status": "stable", "date": "2018-08-09", "source_as_of": "", "url": "/docs/compare/?release=9.6.10", "manual_url": "/docs/9.6/release-9-6-10.html", "source_url": "/docs/release/9.6.10/", "entry_count": 33, "categories": {"security": 2, "improvement": 12, "bugfix": 17, "performance": 2}, "compatibility_count": 0, "cves": ["CVE-2018-10915", "CVE-2018-10925"], "cve_count": 2}, {"version": "9.6.9", "build": "9.6.9", "status": "stable", "date": "2018-05-10", "source_as_of": "", "url": "/docs/compare/?release=9.6.9", "manual_url": "/docs/9.6/release-9-6-9.html", "source_url": "/docs/release/9.6.9/", "entry_count": 43, "categories": {"security": 1, "bugfix": 24, "improvement": 18}, "compatibility_count": 0, "cves": ["CVE-2018-1115"], "cve_count": 1}, {"version": "9.6.8", "build": "9.6.8", "status": "stable", "date": "2018-03-01", "source_as_of": "", "url": "/docs/compare/?release=9.6.8", "manual_url": "/docs/9.6/release-9-6-8.html", "source_url": "/docs/release/9.6.8/", "entry_count": 8, "categories": {"security": 2, "bugfix": 4, "improvement": 2}, "compatibility_count": 0, "cves": ["CVE-2018-1058"], "cve_count": 1}, {"version": "9.6.7", "build": "9.6.7", "status": "stable", "date": "2018-02-08", "source_as_of": "", "url": "/docs/compare/?release=9.6.7", "manual_url": "/docs/9.6/release-9-6-7.html", "source_url": "/docs/release/9.6.7/", "entry_count": 37, "categories": {"security": 1, "bugfix": 20, "improvement": 16}, "compatibility_count": 0, "cves": ["CVE-2018-1053"], "cve_count": 1}, {"version": "9.6.6", "build": "9.6.6", "status": "stable", "date": "2017-11-09", "source_as_of": "", "url": "/docs/compare/?release=9.6.6", "manual_url": "/docs/9.6/release-9-6-6.html", "source_url": "/docs/release/9.6.6/", "entry_count": 38, "categories": {"security": 3, "bugfix": 20, "improvement": 15}, "compatibility_count": 0, "cves": ["CVE-2017-12172", "CVE-2017-15098", "CVE-2017-15099"], "cve_count": 3}, {"version": "9.6.5", "build": "9.6.5", "status": "stable", "date": "2017-08-31", "source_as_of": "", "url": "/docs/compare/?release=9.6.5", "manual_url": "/docs/9.6/release-9-6-5.html", "source_url": "/docs/release/9.6.5/", "entry_count": 10, "categories": {"improvement": 7, "bugfix": 3}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"version": "9.6.4", "build": "9.6.4", "status": "stable", "date": "2017-08-10", "source_as_of": "", "url": "/docs/compare/?release=9.6.4", "manual_url": "/docs/9.6/release-9-6-4.html", "source_url": "/docs/release/9.6.4/", "entry_count": 60, "categories": {"security": 3, "bugfix": 30, "improvement": 26, "performance": 1}, "compatibility_count": 0, "cves": ["CVE-2017-7486", "CVE-2017-7546", "CVE-2017-7547", "CVE-2017-7548"], "cve_count": 4}, {"version": "9.6.3", "build": "9.6.3", "status": "stable", "date": "2017-05-11", "source_as_of": "", "url": "/docs/compare/?release=9.6.3", "manual_url": "/docs/9.6/release-9-6-3.html", "source_url": "/docs/release/9.6.3/", "entry_count": 48, "categories": {"security": 3, "bugfix": 30, "improvement": 13, "performance": 2}, "compatibility_count": 0, "cves": ["CVE-2017-7484", "CVE-2017-7485", "CVE-2017-7486", "CVE-2017-7547"], "cve_count": 4}, {"version": "9.6.2", "build": "9.6.2", "status": "stable", "date": "2017-02-09", "source_as_of": "", "url": "/docs/compare/?release=9.6.2", "manual_url": "/docs/9.6/release-9-6-2.html", "source_url": "/docs/release/9.6.2/", "entry_count": 76, "categories": {"bugfix": 47, "improvement": 29}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"version": "9.6.1", "build": "9.6.1", "status": "stable", "date": "2016-10-27", "source_as_of": "", "url": "/docs/compare/?release=9.6.1", "manual_url": "/docs/9.6/release-9-6-1.html", "source_url": "/docs/release/9.6.1/", "entry_count": 28, "categories": {"bugfix": 17, "improvement": 11}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"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}], "initial_entries": [{"id": "9.6.0-c45fb2c14f7d907e", "cves": [], "html": "<p>\u6539\u8fdb <a href=\"/docs/9.6/monitoring-stats.html#PG-STAT-ACTIVITY-VIEW\" title=\"\u8868\u00a028.3.\u00a0pg_stat_activity \u89c6\u56fe\"><code>pg_stat_activity</code></a> \u89c6\u56fe\u5173\u4e8e\u8fdb\u7a0b\u5728\u7b49\u5f85\u4ec0\u4e48\u7684\u4fe1\u606f\uff08Amit Kapila\u3001Ildus Kurbangaliev\uff09</p>\n<p>\u5386\u53f2\u4e0a\u53ea\u6709\u8fdb\u7a0b\u5728\u7b49\u5f85\u91cd\u91cf\u7ea7\u9501\u65f6\u624d\u663e\u793a\u4e3a\u7b49\u5f85\u4e2d\u3002\u73b0\u5728\u7b49\u5f85\u8f7b\u91cf\u7ea7\u9501\u548c\u7f13\u51b2\u533a pin \u4e5f\u4f1a\u663e\u793a\u5728 <code>pg_stat_activity</code> \u4e2d\u3002\u6b64\u5916\uff0c\u6240\u7b49\u5f85\u7684\u9501\u7c7b\u578b\u73b0\u5728\u4e5f\u53ef\u89c1\u3002\u8fd9\u4e9b\u66f4\u6539\u7528 <code>wait_event_type</code> \u548c <code>wait_event</code> \u5217\u66ff\u6362\u4e86 <code>waiting</code> \u5217\u3002</p>", "text": "\u6539\u8fdb pg_stat_activity \u89c6\u56fe\u5173\u4e8e\u8fdb\u7a0b\u5728\u7b49\u5f85\u4ec0\u4e48\u7684\u4fe1\u606f\uff08Amit Kapila\u3001Ildus Kurbangaliev\uff09 \u5386\u53f2\u4e0a\u53ea\u6709\u8fdb\u7a0b\u5728\u7b49\u5f85\u91cd\u91cf\u7ea7\u9501\u65f6\u624d\u663e\u793a\u4e3a\u7b49\u5f85\u4e2d\u3002\u73b0\u5728\u7b49\u5f85\u8f7b\u91cf\u7ea7\u9501\u548c\u7f13\u51b2\u533a pin \u4e5f\u4f1a\u663e\u793a\u5728 pg_stat_activity \u4e2d\u3002\u6b64\u5916\uff0c\u6240\u7b49\u5f85\u7684\u9501\u7c7b\u578b\u73b0\u5728\u4e5f\u53ef\u89c1\u3002\u8fd9\u4e9b\u66f4\u6539\u7528 wait_event_type \u548c wait_event \u5217\u66ff\u6362\u4e86 waiting \u5217\u3002", "title": "\u6539\u8fdb pg_stat_activity \u89c6\u56fe\u5173\u4e8e\u8fdb\u7a0b\u5728\u7b49\u5f85\u4ec0\u4e48\u7684\u4fe1\u606f", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "f5e61fe875e9074370160d408fc19c9e67bf698ef900cff8c5ddf83b2e5f6703", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["53be0b1ad"]], "identity_text": "Improve the pg_stat_activity view's information about what a process is waiting for (Amit Kapila, Ildus Kurbangaliev) Historically a process has only been shown as waiting if it was waiting for a heavyweight lock. Now waits for lightweight locks and buffer pins are also shown in pg_stat_activity. Also, the type of lock being waited for is now visible. These changes replace the waiting column with wait_event_type and wait_event.", "commit_aliases": ["53be0b1ad"], "source_commits": ["53be0b1ad"], "source_entry_id": "9.6.0/migration/001", "db_id": "e2dc309ebd136c70bf10ef9a0793f2fd", "patch_ids": ["bcf596a0d9a8ad18303a147c3f5cd180"], "statement_hash": "d49f2ffc26eeb4e3aa797082977f5e1e904a30139416f10109ef5efebc07b40d", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-c45fb2c14f7d907e", "migration": true}, {"id": "9.6.0-3a9fc0a62d7fe121", "cves": [], "html": "<p>\u5728 <a href=\"/docs/9.6/functions-formatting.html#FUNCTIONS-FORMATTING-TABLE\" title=\"\u8868\u00a09.23.\u00a0\u683c\u5f0f\u5316\u51fd\u6570\"><code>to_char()</code></a> \u4e2d\uff0c\uff08\u9700\u8981\u65f6\u7684\uff09\u51cf\u53f7\u4e0d\u518d\u8ba1\u4e3a\u65f6\u95f4\u76f8\u5173\u5b57\u6bb5\u5bbd\u5ea6\u7684\u4e00\u90e8\u5206\uff08Bruce Momjian\uff09</p>\n<p>\u4f8b\u5982 <code>to_char('-4 years'::interval, 'YY')</code> \u73b0\u5728\u8fd4\u56de <code>-04</code> \u800c\u4e0d\u662f <code>-4</code>\u3002</p>", "text": "\u5728 to_char() \u4e2d\uff0c\uff08\u9700\u8981\u65f6\u7684\uff09\u51cf\u53f7\u4e0d\u518d\u8ba1\u4e3a\u65f6\u95f4\u76f8\u5173\u5b57\u6bb5\u5bbd\u5ea6\u7684\u4e00\u90e8\u5206\uff08Bruce Momjian\uff09 \u4f8b\u5982 to_char('-4 years'::interval, 'YY') \u73b0\u5728\u8fd4\u56de -04 \u800c\u4e0d\u662f -4\u3002", "title": "\u5728 to_char() \u4e2d\uff0c\uff08\u9700\u8981\u65f6\u7684\uff09\u51cf\u53f7\u4e0d\u518d\u8ba1\u4e3a\u65f6\u95f4\u76f8\u5173\u5b57\u6bb5\u5bbd\u5ea6\u7684\u4e00\u90e8\u5206", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "1e856cfeb0ba091f62247552e0029cacd767c8a5d8bedf29ba4cf4a474ba4bda", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["2d87eedc1"]], "identity_text": "In to_char(), do not count a minus sign (when needed) as part of the field width for time-related fields (Bruce Momjian) For example, to_char('-4 years'::interval, 'YY') now returns -04, rather than -4.", "commit_aliases": ["2d87eedc1"], "source_commits": ["2d87eedc1"], "source_entry_id": "9.6.0/migration/002", "db_id": "17a007dec372d6c06c09edaca640d34b", "patch_ids": ["077b532032e089c823a15258e24673af"], "statement_hash": "8f20f5a9dea16dd09bdb40ee5ed74cb4a34b5b49036447939c011784a941c02f", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-3a9fc0a62d7fe121", "migration": true}, {"id": "9.6.0-640f30844bdb4fbc", "cves": [], "html": "<p>\u4f7f <a href=\"/docs/9.6/functions-datetime.html#FUNCTIONS-DATETIME-TABLE\" title=\"\u8868\u00a09.30.\u00a0\u65e5\u671f/\u65f6\u95f4\u51fd\u6570\"><code>extract()</code></a> \u5bf9\u65e0\u7a77\u5927\u8f93\u5165\u7684\u8868\u73b0\u66f4\u5408\u7406\uff08Vitaly Burovoy\uff09</p>\n<p>\u5386\u53f2\u4e0a <code>extract()</code> \u51fd\u6570\u7ed9\u5b9a\u65e0\u7a77\u65f6\u95f4\u6233\u65f6\u53ea\u662f\u8fd4\u56de\u96f6\uff0c\u65e0\u8bba\u7ed9\u5b9a\u7684\u5b57\u6bb5\u540d\u662f\u4ec0\u4e48\u3002\u73b0\u5728\u5f53\u8bf7\u6c42\u7684\u5b57\u6bb5\u662f\u5355\u8c03\u9012\u589e\u7684\uff08\u5982 <code>year</code>\u3001<code>epoch</code>\uff09\u65f6\u8fd4\u56de <code>infinity</code> \u6216 <code>-infinity</code>\uff0c\u4e0d\u662f\u65f6\uff08\u5982 <code>day</code>\u3001<code>hour</code>\uff09\u8fd4\u56de <code>NULL</code>\u3002\u6b64\u5916\uff0c\u5bf9\u574f\u5b57\u6bb5\u540d\u629b\u51fa\u9884\u671f\u7684\u9519\u8bef\u3002</p>", "text": "\u4f7f extract() \u5bf9\u65e0\u7a77\u5927\u8f93\u5165\u7684\u8868\u73b0\u66f4\u5408\u7406\uff08Vitaly Burovoy\uff09 \u5386\u53f2\u4e0a extract() \u51fd\u6570\u7ed9\u5b9a\u65e0\u7a77\u65f6\u95f4\u6233\u65f6\u53ea\u662f\u8fd4\u56de\u96f6\uff0c\u65e0\u8bba\u7ed9\u5b9a\u7684\u5b57\u6bb5\u540d\u662f\u4ec0\u4e48\u3002\u73b0\u5728\u5f53\u8bf7\u6c42\u7684\u5b57\u6bb5\u662f\u5355\u8c03\u9012\u589e\u7684\uff08\u5982 year\u3001epoch\uff09\u65f6\u8fd4\u56de infinity \u6216 -infinity\uff0c\u4e0d\u662f\u65f6\uff08\u5982 day\u3001hour\uff09\u8fd4\u56de NULL\u3002\u6b64\u5916\uff0c\u5bf9\u574f\u5b57\u6bb5\u540d\u629b\u51fa\u9884\u671f\u7684\u9519\u8bef\u3002", "title": "\u4f7f extract() \u5bf9\u65e0\u7a77\u5927\u8f93\u5165\u7684\u8868\u73b0\u66f4\u5408\u7406", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "7f2955b503b118a7021d565ac667dc562f5697508fd24d7bfc2051203f0607a0", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["647d87c56"]], "identity_text": "Make extract() behave more reasonably with infinite inputs (Vitaly Burovoy) Historically the extract() function just returned zero given an infinite timestamp, regardless of the given field name. Make it return infinity or -infinity as appropriate when the requested field is one that is monotonically increasing (e.g, year, epoch), or NULL when it is not (e.g., day, hour). Also, throw the expected error for bad field names.", "commit_aliases": ["647d87c56"], "source_commits": ["647d87c56"], "source_entry_id": "9.6.0/migration/003", "db_id": "2dc696bd8395e09451423f654f236bc6", "patch_ids": ["fb36be22ac6f96ac5af46d50b7e30df7"], "statement_hash": "fa2b8f03a0e1e973929e03dfae3f774df2d1de667ae6e404d338bf495ed28b1b", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-640f30844bdb4fbc", "migration": true}, {"id": "9.6.0-709f75cc02efb359", "cves": [], "html": "<p>\u79fb\u9664 PL/pgSQL \u4e2d\u6291\u5236 <code>RAISE</code> \u547d\u4ee4\u53d1\u51fa\u6d88\u606f\u7684 <code>CONTEXT</code> \u6700\u5185\u5c42\u7684<span>\u201c<span>\u7279\u6027</span>\u201d</span>\uff08Pavel Stehule\uff09</p>\n<p>\u8fd9\u4e00\u53e4\u8001\u7684\u5411\u540e\u517c\u5bb9 hack \u88ab\u8ba4\u4e3a\u5df2\u5931\u53bb\u7528\u5904\u3002</p>", "text": "\u79fb\u9664 PL/pgSQL \u4e2d\u6291\u5236 RAISE \u547d\u4ee4\u53d1\u51fa\u6d88\u606f\u7684 CONTEXT \u6700\u5185\u5c42\u7684\u201c\u7279\u6027\u201d\uff08Pavel Stehule\uff09 \u8fd9\u4e00\u53e4\u8001\u7684\u5411\u540e\u517c\u5bb9 hack \u88ab\u8ba4\u4e3a\u5df2\u5931\u53bb\u7528\u5904\u3002", "title": "\u79fb\u9664 PL/pgSQL \u4e2d\u6291\u5236 RAISE \u547d\u4ee4\u53d1\u51fa\u6d88\u606f\u7684 CONTEXT \u6700\u5185\u5c42\u7684\u201c\u7279\u6027\u201d", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "a2283b236e5f352ad8084822e91b263bddd493469dcc9a6070ff92859258b65b", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["0426f349e"]], "identity_text": "Remove PL/pgSQL's feature that suppressed the innermost line of CONTEXT for messages emitted by RAISE commands (Pavel Stehule) This ancient backwards-compatibility hack was agreed to have outlived its usefulness.", "commit_aliases": ["0426f349e"], "source_commits": ["0426f349e"], "source_entry_id": "9.6.0/migration/004", "db_id": "170b1fefcffcedda9461e5d56803fec1", "patch_ids": ["d674faf49d479be5cc744274d9634d04"], "statement_hash": "971c59d90a9ad7c27a237bc3429b0c57588ca4beaa6dd3c0b354475ddb06835d", "relations": [{"rule": 2, "type": "related", "target": "38f5670a2a48e398fc5f56296717be27", "evidence": {"same_day": true, "patch_ids": ["d674faf49d479be5cc744274d9634d04"], "ambiguous_patch_ids": ["d674faf49d479be5cc744274d9634d04"]}}, {"rule": 2, "type": "related", "target": "3ce123ea6c2d6bd34288d178655446b8", "evidence": {"same_day": true, "patch_ids": ["d674faf49d479be5cc744274d9634d04"], "ambiguous_patch_ids": ["d674faf49d479be5cc744274d9634d04"]}}], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-709f75cc02efb359", "migration": true}, {"id": "9.6.0-4a84950e7af725c6", "cves": [], "html": "<p>\u4fee\u590d\u9ed8\u8ba4\u6587\u672c\u641c\u7d22\u89e3\u6790\u5668\u5141\u8bb8 <code>email</code> \u548c <code>host</code> \u8bb0\u53f7\u4e2d\u7684\u524d\u5bfc\u6570\u5b57\uff08Artur Zakirov\uff09</p>\n<p>\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u8fd9\u53ea\u4f1a\u5bfc\u81f4\u6587\u672c\u89e3\u6790\u7684\u5c11\u91cf\u53d8\u5316\u3002\u4f46\u5982\u679c\u4f60\u6709\u8fd9\u79cd\u5730\u5740\u9891\u7e41\u51fa\u73b0\u7684\u6570\u636e\uff0c\u53ef\u80fd\u503c\u5f97\u91cd\u5efa\u76f8\u5173\u7684 <code>tsvector</code> \u5217\u548c\u7d22\u5f15\uff0c\u4f7f\u8fd9\u79cd\u5f62\u5f0f\u7684\u5730\u5740\u80fd\u88ab\u6587\u672c\u641c\u7d22\u6b63\u786e\u627e\u5230\u3002</p>", "text": "\u4fee\u590d\u9ed8\u8ba4\u6587\u672c\u641c\u7d22\u89e3\u6790\u5668\u5141\u8bb8 email \u548c host \u8bb0\u53f7\u4e2d\u7684\u524d\u5bfc\u6570\u5b57\uff08Artur Zakirov\uff09 \u5927\u591a\u6570\u60c5\u51b5\u4e0b\u8fd9\u53ea\u4f1a\u5bfc\u81f4\u6587\u672c\u89e3\u6790\u7684\u5c11\u91cf\u53d8\u5316\u3002\u4f46\u5982\u679c\u4f60\u6709\u8fd9\u79cd\u5730\u5740\u9891\u7e41\u51fa\u73b0\u7684\u6570\u636e\uff0c\u53ef\u80fd\u503c\u5f97\u91cd\u5efa\u76f8\u5173\u7684 tsvector \u5217\u548c\u7d22\u5f15\uff0c\u4f7f\u8fd9\u79cd\u5f62\u5f0f\u7684\u5730\u5740\u80fd\u88ab\u6587\u672c\u641c\u7d22\u6b63\u786e\u627e\u5230\u3002", "title": "\u4fee\u590d\u9ed8\u8ba4\u6587\u672c\u641c\u7d22\u89e3\u6790\u5668\u5141\u8bb8 email \u548c host \u8bb0\u53f7\u4e2d\u7684\u524d\u5bfc\u6570\u5b57", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "3cb73f5fa064b8b8e5c77e45ef27a63cd4f1542336cc736c754f5d27a8862e5c", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["61d66c44f"]], "identity_text": "Fix the default text search parser to allow leading digits in email and host tokens (Artur Zakirov) In most cases this will result in few changes in the parsing of text. But if you have data where such addresses occur frequently, it may be worth rebuilding dependent tsvector columns and indexes so that addresses of this form will be found properly by text searches.", "commit_aliases": ["61d66c44f"], "source_commits": ["61d66c44f"], "source_entry_id": "9.6.0/migration/005", "db_id": "b749eb94f36cc6c5201663896819c6a0", "patch_ids": ["4faf17b1f7f15f13d164bdccecda332f"], "statement_hash": "e82e3c3133216ec60cd00012503ac03de9f31995077fa163ef1ef3067136fba2", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-4a84950e7af725c6", "migration": true}, {"id": "9.6.0-a9637e0b4c51a70b", "cves": [], "html": "<p>\u6269\u5c55 <a href=\"/docs/9.6/unaccent.html\" title=\"F.44.\u00a0unaccent\"><code>contrib/unaccent</code></a> \u7684\u6807\u51c6 <code>unaccent.rules</code> \u6587\u4ef6\u4ee5\u5904\u7406 Unicode \u5df2\u77e5\u7684\u6240\u6709\u53d8\u97f3\u7b26\u53f7\uff0c\u5e76\u6b63\u786e\u5c55\u5f00\u8fde\u5b57\uff08Thomas Munro\u3001L\u00e9onard Benedetti\uff09</p>\n<p>\u4ee5\u524d\u7684\u7248\u672c\u6f0f\u6389\u4e86\u8f6c\u6362\u4e00\u4e9b\u8f83\u4e0d\u5e38\u89c1\u7684\u5e26\u53d8\u97f3\u7b26\u53f7\u5b57\u6bcd\u3002\u6b64\u5916\u8fde\u5b57\u73b0\u5728\u88ab\u5c55\u5f00\u4e3a\u5355\u72ec\u7684\u5b57\u6bcd\u3002\u4f7f\u7528\u6b64\u89c4\u5219\u6587\u4ef6\u7684\u5b89\u88c5\u53ef\u80fd\u5e0c\u671b\u91cd\u5efa\u4f9d\u8d56\u5176\u7ed3\u679c\u7684 <code>tsvector</code> \u5217\u548c\u7d22\u5f15\u3002</p>", "text": "\u6269\u5c55 contrib/unaccent \u7684\u6807\u51c6 unaccent.rules \u6587\u4ef6\u4ee5\u5904\u7406 Unicode \u5df2\u77e5\u7684\u6240\u6709\u53d8\u97f3\u7b26\u53f7\uff0c\u5e76\u6b63\u786e\u5c55\u5f00\u8fde\u5b57\uff08Thomas Munro\u3001L\u00e9onard Benedetti\uff09 \u4ee5\u524d\u7684\u7248\u672c\u6f0f\u6389\u4e86\u8f6c\u6362\u4e00\u4e9b\u8f83\u4e0d\u5e38\u89c1\u7684\u5e26\u53d8\u97f3\u7b26\u53f7\u5b57\u6bcd\u3002\u6b64\u5916\u8fde\u5b57\u73b0\u5728\u88ab\u5c55\u5f00\u4e3a\u5355\u72ec\u7684\u5b57\u6bcd\u3002\u4f7f\u7528\u6b64\u89c4\u5219\u6587\u4ef6\u7684\u5b89\u88c5\u53ef\u80fd\u5e0c\u671b\u91cd\u5efa\u4f9d\u8d56\u5176\u7ed3\u679c\u7684 tsvector \u5217\u548c\u7d22\u5f15\u3002", "title": "\u6269\u5c55 contrib/unaccent \u7684\u6807\u51c6 unaccent.rules \u6587\u4ef6\u4ee5\u5904\u7406 Unicode \u5df2\u77e5\u7684\u6240\u6709\u53d8\u97f3\u7b26\u53f7\uff0c\u5e76\u6b63\u786e\u5c55\u5f00\u8fde\u5b57", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "467429103d85d523539599e2eb19d0d0f7411a961c2780ef72a9ca76121af389", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["1bbd52cb9"], ["9a206d063"]], "identity_text": "Extend contrib/unaccent's standard unaccent.rules file to handle all diacritics known to Unicode, and to expand ligatures correctly (Thomas Munro, L\u00e9onard Benedetti) The previous version neglected to convert some less-common letters with diacritic marks. Also, ligatures are now expanded into separate letters. Installations that use this rules file may wish to rebuild tsvector columns and indexes that depend on the result.", "commit_aliases": ["1bbd52cb9", "9a206d063"], "source_commits": ["1bbd52cb9", "9a206d063"], "source_entry_id": "9.6.0/migration/006", "db_id": "f803482fb74818b6a3b27a4473d26aa3", "patch_ids": ["277f9ba913b84107a8966cc07afc9737", "b7cecf35ca32cc49b8aecd6f8c4b46eb"], "statement_hash": "bcdfc447eeb1a5ad62bcadc4d3f053b2a2af7b6f16036a2426a1a2c8028f179d", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-a9637e0b4c51a70b", "migration": true}, {"id": "9.6.0-52e9b49e6d5c7c7c", "cves": [], "html": "<p>\u4ece <code>CREATE ROLE</code> \u53ca\u76f8\u5173\u547d\u4ee4\u4e2d\u79fb\u9664\u65e9\u5df2\u5f03\u7528\u7684 <code>CREATEUSER</code>/<code>NOCREATEUSER</code> \u9009\u9879\uff08Tom Lane\uff09</p>\n<p>\u7531\u4e8e\u53e4\u8001\u7684\u5411\u540e\u517c\u5bb9\u539f\u56e0\uff0c<code>CREATEUSER</code> \u5b9e\u9645\u4e0a\u610f\u5473\u7740 <code>SUPERUSER</code>\u3002\u8fd9\u4e00\u76f4\u662f\uff08\u5408\u7406\u5730\uff09\u671f\u671b\u5b83\u8868\u793a <code>CREATEROLE</code> \u7684\u4eba\u4eec\u7684\u6301\u7eed\u56f0\u60d1\u6e90\u3002\u5b83\u5df2\u88ab\u5f03\u7528\u5341\u5e74\uff0c\u56e0\u6b64\u901a\u8fc7\u79fb\u9664\u6765\u4fee\u590d\u95ee\u9898\u3002</p>", "text": "\u4ece CREATE ROLE \u53ca\u76f8\u5173\u547d\u4ee4\u4e2d\u79fb\u9664\u65e9\u5df2\u5f03\u7528\u7684 CREATEUSER/NOCREATEUSER \u9009\u9879\uff08Tom Lane\uff09 \u7531\u4e8e\u53e4\u8001\u7684\u5411\u540e\u517c\u5bb9\u539f\u56e0\uff0cCREATEUSER \u5b9e\u9645\u4e0a\u610f\u5473\u7740 SUPERUSER\u3002\u8fd9\u4e00\u76f4\u662f\uff08\u5408\u7406\u5730\uff09\u671f\u671b\u5b83\u8868\u793a CREATEROLE \u7684\u4eba\u4eec\u7684\u6301\u7eed\u56f0\u60d1\u6e90\u3002\u5b83\u5df2\u88ab\u5f03\u7528\u5341\u5e74\uff0c\u56e0\u6b64\u901a\u8fc7\u79fb\u9664\u6765\u4fee\u590d\u95ee\u9898\u3002", "title": "\u4ece CREATE ROLE \u53ca\u76f8\u5173\u547d\u4ee4\u4e2d\u79fb\u9664\u65e9\u5df2\u5f03\u7528\u7684 CREATEUSER/NOCREATEUSER \u9009\u9879", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "e0e4570969d76e990ac664d6b39afc297baea71691d3ae6e1a880695ca1644b0", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["d371bebd3"]], "identity_text": "Remove the long-deprecated CREATEUSER/NOCREATEUSER options from CREATE ROLE and allied commands (Tom Lane) CREATEUSER actually meant SUPERUSER, for ancient backwards-compatibility reasons. This has been a constant source of confusion for people who (reasonably) expect it to mean CREATEROLE. It has been deprecated for ten years now, so fix the problem by removing it.", "commit_aliases": ["d371bebd3"], "source_commits": ["d371bebd3"], "source_entry_id": "9.6.0/migration/007", "db_id": "3932e353833368c6b2a182c4d1edd0bf", "patch_ids": ["00a6717bf5453e71c25406c6ff93027e"], "statement_hash": "bc0dce25cbcef327da240e192cd838e7c6f3ba9fd1319f891f4cc1c423b96634", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-52e9b49e6d5c7c7c", "migration": true}, {"id": "9.6.0-b1eb64ea66631927", "cves": [], "html": "<p>\u628a\u4ee5 <code>pg_</code> \u5f00\u5934\u7684\u89d2\u8272\u540d\u89c6\u4e3a\u4fdd\u7559\uff08Stephen Frost\uff09</p>\n<p>\u73b0\u5728\u4e0d\u5141\u8bb8\u7528\u6237\u521b\u5efa\u8fd9\u79cd\u89d2\u8272\u540d\u3002\u8fd9\u9632\u6b62\u4e0e <span>initdb</span> \u521b\u5efa\u7684\u5185\u5efa\u89d2\u8272\u51b2\u7a81\u3002</p>", "text": "\u628a\u4ee5 pg_ \u5f00\u5934\u7684\u89d2\u8272\u540d\u89c6\u4e3a\u4fdd\u7559\uff08Stephen Frost\uff09 \u73b0\u5728\u4e0d\u5141\u8bb8\u7528\u6237\u521b\u5efa\u8fd9\u79cd\u89d2\u8272\u540d\u3002\u8fd9\u9632\u6b62\u4e0e initdb \u521b\u5efa\u7684\u5185\u5efa\u89d2\u8272\u51b2\u7a81\u3002", "title": "\u628a\u4ee5 pg_ \u5f00\u5934\u7684\u89d2\u8272\u540d\u89c6\u4e3a\u4fdd\u7559", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "9ff12fa1b2f139e5eb71f86ffbdb93f9e7350e7da92e6e36b402d99e32472451", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["293007898"], ["7df974ee0"], ["a89505fd2"]], "identity_text": "Treat role names beginning with pg_ as reserved (Stephen Frost) User creation of such role names is now disallowed. This prevents conflicts with built-in roles created by initdb.", "commit_aliases": ["293007898", "7df974ee0", "a89505fd2"], "source_commits": ["293007898", "7df974ee0", "a89505fd2"], "source_entry_id": "9.6.0/migration/008", "db_id": "3972d610a1c387388e962e552b480a89", "patch_ids": ["03ebea0db083d73366dbe6a7174ba0b8", "08bb0085366a845af153d5fafe9b31b9", "d2cc9157527b29931277bb8c40fb17e1"], "statement_hash": "1a8f2c65da2eea6508c12b224c8353e7d09f9020fb2d4dd74d9ceef87d819dee", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-b1eb64ea66631927", "migration": true}, {"id": "9.6.0-0fad871df3b84335", "cves": [], "html": "<p>\u628a <code>information_schema</code>.<code>routines</code> \u89c6\u56fe\u4e2d\u7684\u5217\u540d <code>result_cast_character_set_name</code> \u6539\u4e3a <code>result_cast_char_set_name</code>\uff08Cl\u00e9ment Pr\u00e9vost\uff09</p>\n<p>SQL:2011 \u6807\u51c6\u6307\u5b9a\u4e86\u8f83\u957f\u7684\u540d\u5b57\uff0c\u4f46\u8fd9\u770b\u8d77\u6765\u662f\u4e2a\u9519\u8bef\uff0c\u56e0\u4e3a\u76f8\u90bb\u5217\u540d\u548c\u5176\u4ed6 <code>information_schema</code> \u89c6\u56fe\u90fd\u4f7f\u7528\u8f83\u77ed\u7684\u98ce\u683c\u3002</p>", "text": "\u628a information_schema.routines \u89c6\u56fe\u4e2d\u7684\u5217\u540d result_cast_character_set_name \u6539\u4e3a result_cast_char_set_name\uff08Cl\u00e9ment Pr\u00e9vost\uff09 SQL:2011 \u6807\u51c6\u6307\u5b9a\u4e86\u8f83\u957f\u7684\u540d\u5b57\uff0c\u4f46\u8fd9\u770b\u8d77\u6765\u662f\u4e2a\u9519\u8bef\uff0c\u56e0\u4e3a\u76f8\u90bb\u5217\u540d\u548c\u5176\u4ed6 information_schema \u89c6\u56fe\u90fd\u4f7f\u7528\u8f83\u77ed\u7684\u98ce\u683c\u3002", "title": "\u628a information_schema.routines \u89c6\u56fe\u4e2d\u7684\u5217\u540d result_cast_character_set_name \u6539\u4e3a result_cast_char_set_name", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "2fc01c279df661840ddd2c4c96aad83d8bf225fe9e5eebd2b98256007ec479f7", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["d8710f18f"]], "identity_text": "Change a column name in the information_schema.routines view from result_cast_character_set_name to result_cast_char_set_name (Cl\u00e9ment Pr\u00e9vost) The SQL:2011 standard specifies the longer name, but that appears to be a mistake, because adjacent column names use the shorter style, as do other information_schema views.", "commit_aliases": ["d8710f18f"], "source_commits": ["d8710f18f"], "source_entry_id": "9.6.0/migration/009", "db_id": "0a291ea22cac47a949457b287472320a", "patch_ids": ["328841cead83e561d0fd754e2aa711b9"], "statement_hash": "a1a68be950a734186cf7a52059642c4ab027bbea9741714968ae30db84ef38ec", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-0fad871df3b84335", "migration": true}, {"id": "9.6.0-da86a4f603d24861", "cves": [], "html": "<p><span>psql</span> \u7684 <code>-c</code> \u9009\u9879\u4e0d\u518d\u9690\u542b <code>--no-psqlrc</code>\uff08Pavel Stehule\u3001Catalin Iacob\uff09</p>\n<p>\u663e\u5f0f\u5199 <code>--no-psqlrc</code>\uff08\u6216\u5176\u7f29\u5199 <code>-X</code>\uff09\u6765\u83b7\u5f97\u65e7\u884c\u4e3a\u3002\u8fd9\u6837\u4fee\u6539\u540e\u7684\u811a\u672c\u5728\u65e7\u7248\u672c <span>psql</span> \u4e2d\u4ecd\u80fd\u5de5\u4f5c\u3002</p>", "text": "psql \u7684 -c \u9009\u9879\u4e0d\u518d\u9690\u542b --no-psqlrc\uff08Pavel Stehule\u3001Catalin Iacob\uff09 \u663e\u5f0f\u5199 --no-psqlrc\uff08\u6216\u5176\u7f29\u5199 -X\uff09\u6765\u83b7\u5f97\u65e7\u884c\u4e3a\u3002\u8fd9\u6837\u4fee\u6539\u540e\u7684\u811a\u672c\u5728\u65e7\u7248\u672c psql \u4e2d\u4ecd\u80fd\u5de5\u4f5c\u3002", "title": "psql \u7684 -c \u9009\u9879\u4e0d\u518d\u9690\u542b --no-psqlrc", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "f2b462f51d5ec42aace90d38071f96349407dbeac7b6358311eb13829c7e5f8b", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["d5563d7df"]], "identity_text": "psql's -c option no longer implies --no-psqlrc (Pavel Stehule, Catalin Iacob) Write --no-psqlrc (or its abbreviation -X) explicitly to obtain the old behavior. Scripts so modified will still work with old versions of psql.", "commit_aliases": ["d5563d7df"], "source_commits": ["d5563d7df"], "source_entry_id": "9.6.0/migration/010", "db_id": "fc511d32b5b42f2b7b4101c635c29f52", "patch_ids": ["d44cc20a573665822f6c5b3fb2de7086"], "statement_hash": "6ac863943fdc1e52ce098aa0f8ba426780904a6a82d2dcf21f72855c56892218", "relations": [{"rule": 2, "type": "related", "target": "a00cd5070d8809c80e20264fef692640", "evidence": {"same_day": true, "patch_ids": ["d44cc20a573665822f6c5b3fb2de7086"]}}], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-da86a4f603d24861", "migration": true}, {"id": "9.6.0-154291ec4700473f", "cves": [], "html": "<p>\u6539\u8fdb <span>pg_restore</span> \u7684 <code>-t</code> \u9009\u9879\u5339\u914d\u6240\u6709\u7c7b\u578b\u7684\u5173\u7cfb\uff0c\u800c\u4e0d\u53ea\u662f\u666e\u901a\u8868\uff08Craig Ringer\uff09</p>", "text": "\u6539\u8fdb pg_restore \u7684 -t \u9009\u9879\u5339\u914d\u6240\u6709\u7c7b\u578b\u7684\u5173\u7cfb\uff0c\u800c\u4e0d\u53ea\u662f\u666e\u901a\u8868\uff08Craig Ringer\uff09", "title": "\u6539\u8fdb pg_restore \u7684 -t \u9009\u9879\u5339\u914d\u6240\u6709\u7c7b\u578b\u7684\u5173\u7cfb\uff0c\u800c\u4e0d\u53ea\u662f\u666e\u901a\u8868", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "1ef2e0598dd129446b52863714e5c8daac514b4645ffebfb55aeaee3ca90b1bd", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["5671aaca8"]], "identity_text": "Improve pg_restore's -t option to match all types of relations, not only plain tables (Craig Ringer)", "commit_aliases": ["5671aaca8"], "source_commits": ["5671aaca8"], "source_entry_id": "9.6.0/migration/011", "db_id": "eef97d98f9e3592d163f35c79e1e5528", "patch_ids": ["69a4910ed89353b3f8b06d2e962c2963"], "statement_hash": "eda40665e7df662fe5860a3e10b364252e60b538909207ae68b95d0fd43e71ed", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-154291ec4700473f", "migration": true}, {"id": "9.6.0-74135f32500ac56e", "cves": [], "html": "<p>\u66f4\u6539 <span>pg_controldata</span> \u53ca\u76f8\u5173\u5730\u65b9\u7528\u4e8e <code>NextXID</code> \u7684\u663e\u793a\u683c\u5f0f\uff08Joe Conway\u3001Bruce Momjian\uff09</p>\n<p>\u4ee5 <em><code>number</code></em><code>:</code><em><code>number</code></em> \u683c\u5f0f\u663e\u793a\u7eaa\u5143\u52a0\u4e8b\u52a1 ID \u503c\u3002\u4ee5\u524d\u7684\u683c\u5f0f <em><code>number</code></em><code>/</code><em><code>number</code></em> \u4e0e <acronym>LSN</acronym> \u4f7f\u7528\u7684\u683c\u5f0f\u60ca\u4eba\u5730\u76f8\u4f3c\u3002</p>", "text": "\u66f4\u6539 pg_controldata \u53ca\u76f8\u5173\u5730\u65b9\u7528\u4e8e NextXID \u7684\u663e\u793a\u683c\u5f0f\uff08Joe Conway\u3001Bruce Momjian\uff09 \u4ee5 number:number \u683c\u5f0f\u663e\u793a\u7eaa\u5143\u52a0\u4e8b\u52a1 ID \u503c\u3002\u4ee5\u524d\u7684\u683c\u5f0f number/number \u4e0e LSN \u4f7f\u7528\u7684\u683c\u5f0f\u60ca\u4eba\u5730\u76f8\u4f3c\u3002", "title": "\u66f4\u6539 pg_controldata \u53ca\u76f8\u5173\u5730\u65b9\u7528\u4e8e NextXID \u7684\u663e\u793a\u683c\u5f0f", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "74b6bd1a318b16b707b1a1c7f36c7b5e22a066e2618ad3fb0e31a8adbf64873b", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["59a884e98"]], "identity_text": "Change the display format used for NextXID in pg_controldata and related places (Joe Conway, Bruce Momjian) Display epoch-and-transaction-ID values in the format number:number. The previous format number/number was confusingly similar to that used for LSNs.", "commit_aliases": ["59a884e98"], "source_commits": ["59a884e98"], "source_entry_id": "9.6.0/migration/012", "db_id": "5afe4b041eedace38feff2840e7529c9", "patch_ids": ["e6017d08f712f6a8b11473e76c2a5a2f"], "statement_hash": "1698fc2dc577bf8c808c47c68f428419c746a02bf0957b430600504cfa338029", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-74135f32500ac56e", "migration": true}, {"id": "9.6.0-47dc5f9a3fb701d0", "cves": [], "html": "<p>\u66f4\u65b0\u6269\u5c55\u51fd\u6570\u5728\u9002\u5f53\u4e4b\u5904\u6807\u8bb0\u4e3a\u5e76\u884c\u5b89\u5168\uff08Andreas Karlsson\uff09</p>\n<p>\u8bb8\u591a\u6807\u51c6\u6269\u5c55\u5df2\u88ab\u66f4\u65b0\u4ee5\u5141\u8bb8\u5176\u51fd\u6570\u5728\u5e76\u884c\u67e5\u8be2\u5de5\u4f5c\u8005\u8fdb\u7a0b\u4e2d\u6267\u884c\u3002\u8fd9\u4e9b\u66f4\u6539\u5728\u4ece\u4ee5\u524d\u7248\u672c <span>pg_upgrade</span> \u8fc7\u6765\u7684\u6570\u636e\u5e93\u4e2d\u4e0d\u4f1a\u751f\u6548\uff0c\u9664\u975e\u5bf9\u6bcf\u4e2a\u8fd9\u79cd\u6269\u5c55\uff08\u5728\u96c6\u7c07\u7684\u6bcf\u4e2a\u6570\u636e\u5e93\u4e2d\uff09\u5e94\u7528 <code>ALTER EXTENSION UPDATE</code>\u3002</p>", "text": "\u66f4\u65b0\u6269\u5c55\u51fd\u6570\u5728\u9002\u5f53\u4e4b\u5904\u6807\u8bb0\u4e3a\u5e76\u884c\u5b89\u5168\uff08Andreas Karlsson\uff09 \u8bb8\u591a\u6807\u51c6\u6269\u5c55\u5df2\u88ab\u66f4\u65b0\u4ee5\u5141\u8bb8\u5176\u51fd\u6570\u5728\u5e76\u884c\u67e5\u8be2\u5de5\u4f5c\u8005\u8fdb\u7a0b\u4e2d\u6267\u884c\u3002\u8fd9\u4e9b\u66f4\u6539\u5728\u4ece\u4ee5\u524d\u7248\u672c pg_upgrade \u8fc7\u6765\u7684\u6570\u636e\u5e93\u4e2d\u4e0d\u4f1a\u751f\u6548\uff0c\u9664\u975e\u5bf9\u6bcf\u4e2a\u8fd9\u79cd\u6269\u5c55\uff08\u5728\u96c6\u7c07\u7684\u6bcf\u4e2a\u6570\u636e\u5e93\u4e2d\uff09\u5e94\u7528 ALTER EXTENSION UPDATE\u3002", "title": "\u66f4\u65b0\u6269\u5c55\u51fd\u6570\u5728\u9002\u5f53\u4e4b\u5904\u6807\u8bb0\u4e3a\u5e76\u884c\u5b89\u5168", "commits": [], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.4", "source_hash": "0f1735b2d333d989ab19ad7aa8164b054d0498bce855a80eb86c4e061fd887e6", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["a89b4b1be"]], "identity_text": "Update extension functions to be marked parallel-safe where appropriate (Andreas Karlsson) Many of the standard extensions have been updated to allow their functions to be executed within parallel query worker processes. These changes will not take effect in databases pg_upgrade'd from prior versions unless you apply ALTER EXTENSION UPDATE to each such extension (in each database of a cluster).", "commit_aliases": ["a89b4b1be"], "source_commits": ["a89b4b1be"], "source_entry_id": "9.6.0/migration/013", "db_id": "ab1d1ca160fae426ee12ffbb7759055d", "patch_ids": ["aaeac8e4bb0600da8eedf031229263af"], "statement_hash": "c9150d5604f50e26b9ebcd2f828290ff3645d3a31f8f88ad3c0b59d0dae9a5d0", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=9.6.0#9.6.0-47dc5f9a3fb701d0", "migration": true}, {"id": "9.6.0-da78efed596cadbb", "cves": [], "html": "<p>\u5e76\u884c\u67e5\u8be2\uff08Robert Haas\u3001Amit Kapila\u3001David Rowley \u7b49\u8bb8\u591a\u4eba\uff09</p>\n<p>\u5728 9.6 \u4e2d\uff0c<span>PostgreSQL</span> \u5f15\u5165\u4e86\u5bf9\u5927\u67e5\u8be2\u5e76\u884c\u6267\u884c\u7684\u521d\u6b65\u652f\u6301\u3002\u53ea\u6709\u9a71\u52a8\u8868\u901a\u8fc7\u987a\u5e8f\u626b\u63cf\u8bbf\u95ee\u7684\u4e25\u683c\u53ea\u8bfb\u67e5\u8be2\u53ef\u4ee5\u5e76\u884c\u5316\u3002\u54c8\u5e0c\u8fde\u63a5\u548c\u5d4c\u5957\u5faa\u73af\u53ef\u4ee5\u5e76\u884c\u6267\u884c\uff0c\u805a\u5408\uff08\u5bf9\u53d7\u652f\u6301\u7684\u805a\u5408\uff09\u4e5f\u662f\u3002\u8fd8\u6709\u5f88\u591a\u5de5\u4f5c\u8981\u505a\uff0c\u4f46\u8fd9\u5df2\u7ecf\u662f\u4e00\u7ec4\u6709\u7528\u7684\u7279\u6027\u3002</p>\n<p>\u5e76\u884c\u67e5\u8be2\u6267\u884c\uff08\u8fd8\uff09\u6ca1\u6709\u9ed8\u8ba4\u542f\u7528\u3002\u8981\u5141\u8bb8\u5b83\uff0c\u628a\u65b0\u914d\u7f6e\u53c2\u6570<a href=\"/docs/9.6/runtime-config-resource.html#GUC-MAX-PARALLEL-WORKERS-PER-GATHER\">max_parallel_workers_per_gather</a>\u8bbe\u4e3a\u5927\u4e8e\u96f6\u7684\u503c\u3002\u5bf9\u5e76\u884c\u6027\u4f7f\u7528\u7684\u989d\u5916\u63a7\u5236\u53ef\u901a\u8fc7\u5176\u4ed6\u65b0\u914d\u7f6e\u53c2\u6570<a href=\"/docs/9.6/runtime-config-query.html#GUC-FORCE-PARALLEL-MODE\">force_parallel_mode</a>\u3001<a href=\"/docs/9.6/runtime-config-query.html#GUC-PARALLEL-SETUP-COST\">parallel_setup_cost</a>\u3001<a href=\"/docs/9.6/runtime-config-query.html#GUC-PARALLEL-TUPLE-COST\">parallel_tuple_cost</a>\u548c<a href=\"/docs/9.6/runtime-config-query.html#GUC-MIN-PARALLEL-RELATION-SIZE\">min_parallel_relation_size</a>\u83b7\u5f97\u3002</p>", "text": "\u5e76\u884c\u67e5\u8be2\uff08Robert Haas\u3001Amit Kapila\u3001David Rowley \u7b49\u8bb8\u591a\u4eba\uff09 \u5728 9.6 \u4e2d\uff0cPostgreSQL \u5f15\u5165\u4e86\u5bf9\u5927\u67e5\u8be2\u5e76\u884c\u6267\u884c\u7684\u521d\u6b65\u652f\u6301\u3002\u53ea\u6709\u9a71\u52a8\u8868\u901a\u8fc7\u987a\u5e8f\u626b\u63cf\u8bbf\u95ee\u7684\u4e25\u683c\u53ea\u8bfb\u67e5\u8be2\u53ef\u4ee5\u5e76\u884c\u5316\u3002\u54c8\u5e0c\u8fde\u63a5\u548c\u5d4c\u5957\u5faa\u73af\u53ef\u4ee5\u5e76\u884c\u6267\u884c\uff0c\u805a\u5408\uff08\u5bf9\u53d7\u652f\u6301\u7684\u805a\u5408\uff09\u4e5f\u662f\u3002\u8fd8\u6709\u5f88\u591a\u5de5\u4f5c\u8981\u505a\uff0c\u4f46\u8fd9\u5df2\u7ecf\u662f\u4e00\u7ec4\u6709\u7528\u7684\u7279\u6027\u3002 \u5e76\u884c\u67e5\u8be2\u6267\u884c\uff08\u8fd8\uff09\u6ca1\u6709\u9ed8\u8ba4\u542f\u7528\u3002\u8981\u5141\u8bb8\u5b83\uff0c\u628a\u65b0\u914d\u7f6e\u53c2\u6570max_parallel_workers_per_gather\u8bbe\u4e3a\u5927\u4e8e\u96f6\u7684\u503c\u3002\u5bf9\u5e76\u884c\u6027\u4f7f\u7528\u7684\u989d\u5916\u63a7\u5236\u53ef\u901a\u8fc7\u5176\u4ed6\u65b0\u914d\u7f6e\u53c2\u6570force_parallel_mode\u3001parallel_setup_cost\u3001parallel_tuple_cost\u548cmin_parallel_relation_size\u83b7\u5f97\u3002", "title": "\u5e76\u884c\u67e5\u8be2\uff08Robert Haas\u3001Amit Kapila\u3001David Rowley \u7b49\u8bb8\u591a\u4eba\uff09", "commits": [], "section": "\u670d\u52a1\u5668 / \u5e76\u884c\u67e5\u8be2", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.2", "source_hash": "55e634fa02154adadcbdb0702b8faeb98e5c11eecfcbec9621048480e77db24f", "section_path": ["\u670d\u52a1\u5668", "\u5e76\u884c\u67e5\u8be2"], "commit_groups": [["11c8669c0"], ["1efc7e538"], ["25fe8b5f1"], ["3bd909b22"], ["45be99f8c"], ["4a4e6893a"], ["57a6a72b6"], ["59eb55127"], ["69d34408e"], ["6e71dd7ce"], ["72ce78162"], ["75be66464"], ["7bea19d0a"], ["7c944bd90"], ["80558c1f5"], ["a0d9f6e43"], ["a1c1af2a1"], ["a53c06a13"], ["b287df70e"], ["bfc78d719"], ["c9ce4a1c6"], ["d1b7c1ffe"], ["e06a38965"], ["ee7ca559f"], ["f0661c4e8"], ["f85b1a841"]], "identity_text": "Parallel queries (Robert Haas, Amit Kapila, David Rowley, many others) With 9.6, PostgreSQL introduces initial support for parallel execution of large queries. Only strictly read-only queries where the driving table is accessed via a sequential scan can be parallelized. Hash joins and nested loops can be performed in parallel, as can aggregation (for supported aggregates). Much remains to be done, but this is already a useful set of features. Parallel query execution is not (yet) enabled by default. To allow it, set the new configuration parameter guc-max-parallel-workers-per-gather to a value larger than zero. Additional control over use of parallelism is available through other new configuration parameters guc-force-parallel-mode , guc-parallel-setup-cost , guc-parallel-tuple-cost , and guc-min-parallel-relation-size .", "commit_aliases": ["11c8669c0", "1efc7e538", "25fe8b5f1", "3bd909b22", "45be99f8c", "4a4e6893a", "57a6a72b6", "59eb55127", "69d34408e", "6e71dd7ce", "72ce78162", "75be66464", "7bea19d0a", "7c944bd90", "80558c1f5", "a0d9f6e43", "a1c1af2a1", "a53c06a13", "b287df70e", "bfc78d719", "c9ce4a1c6", "d1b7c1ffe", "e06a38965", "ee7ca559f", "f0661c4e8", "f85b1a841"], "source_commits": ["11c8669c0", "1efc7e538", "25fe8b5f1", "3bd909b22", "45be99f8c", "4a4e6893a", "57a6a72b6", "59eb55127", "69d34408e", "6e71dd7ce", "72ce78162", "75be66464", "7bea19d0a", "7c944bd90", "80558c1f5", "a0d9f6e43", "a1c1af2a1", "a53c06a13", "b287df70e", "bfc78d719", "c9ce4a1c6", "d1b7c1ffe", "e06a38965", "ee7ca559f", "f0661c4e8", "f85b1a841"], "source_entry_id": "9.6.0/changes/001", "db_id": "22b2014145e35233da7ced351b18ef4d", "patch_ids": ["001cca10c70acf6177ab1217eeca697a", "0d3f74792898dc39bde7efe7eca975a2", "17d991abd00a3c648ea5650546e09ca0", "18e9f56e9c810deb596144284fb10f33", "2283e740857d7dff852570a151eaec7b", "2fff3db6bdec060c535b5e91c3fa594a", "41f884cae78b316da0312bfebf8073c1", "520b16c8e18008b2595a89f26a594e56", "621719f002265d61193ca9754db04a74", "6972d6aaef39874f38835bac272d10a3", "6a70216c928118ab558fc741be67b05d", "6f8bb21409ca075899b6aa07d3416004", "781f23a81096db288d37a44a78a36796", "7d027bc09def3e52c68dfa2f16e32092", "879e529f084ad2b511a84123c4670753", "95ca31bd9678aaf5d3b0a93842deb93f", "98be47afd1deeb332ed6a79210df0545", "a1fdce3220d2f3c58b2b478f379e6892", "aca605db471104f5402a59ff6f9cce8c", "c4db81f2216ccae956e896478d8eaf15", "d2dd7d8f46472d97a8a3001e97cb69bf", "d360915fafda6c11de193f0ab65fad37", "de3489345f819ee847abce5473ab618e", "f7d7b531f6d3a1c066f9562d0945c70a", "f8ced9215273a75d487cbb38587ce4fe", "fb081e5eb27a83f10b7388dae9ec235d"], "statement_hash": "652a42eb767e5391fe6d5a6f3506466e5314c4094638a9e496ecc70e0496f4f5", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-da78efed596cadbb", "migration": false}, {"id": "9.6.0-83a1b0c297bdcf06", "cves": [], "html": "<p>\u63d0\u4f9b\u6807\u8bb0\u51fd\u6570\u5e76\u884c\u5b89\u5168\u72b6\u6001\u7684\u57fa\u7840\u8bbe\u65bd\uff08Robert Haas\u3001Amit Kapila\uff09</p>", "text": "\u63d0\u4f9b\u6807\u8bb0\u51fd\u6570\u5e76\u884c\u5b89\u5168\u72b6\u6001\u7684\u57fa\u7840\u8bbe\u65bd\uff08Robert Haas\u3001Amit Kapila\uff09", "title": "\u63d0\u4f9b\u6807\u8bb0\u51fd\u6570\u5e76\u884c\u5b89\u5168\u72b6\u6001\u7684\u57fa\u7840\u8bbe\u65bd", "commits": [], "section": "\u670d\u52a1\u5668 / \u5e76\u884c\u67e5\u8be2", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.2", "source_hash": "a5a4c45369f775a9a3fbde34c4a4a75bd21f5ec0050c0331df8ba3b6d5015aeb", "section_path": ["\u670d\u52a1\u5668", "\u5e76\u884c\u67e5\u8be2"], "commit_groups": [["7aea8e4f2"]], "identity_text": "Provide infrastructure for marking the parallel-safety status of functions (Robert Haas, Amit Kapila)", "commit_aliases": ["7aea8e4f2"], "source_commits": ["7aea8e4f2"], "source_entry_id": "9.6.0/changes/002", "db_id": "6a6b0a8c71f2467504be5f5d4179523a", "patch_ids": ["01343dd54039ebf13b9cceb510efa9b1"], "statement_hash": "8c421de313c1db27697e30d6c94477f6b8967c8aaaf46046414b948ef69951cf", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-83a1b0c297bdcf06", "migration": false}, {"id": "9.6.0-27fc6aec9e047d0b", "cves": [], "html": "<p>\u5141\u8bb8 <a href=\"/docs/9.6/gin.html\" title=\"\u7b2c\u00a063\u00a0\u7ae0\u00a0GIN \u7d22\u5f15\"><acronym>GIN</acronym></a> \u7d22\u5f15\u6784\u5efa\u6709\u6548\u5229\u7528\u5927\u4e8e 1 GB \u7684<a href=\"/docs/9.6/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM\">maintenance_work_mem</a>\u8bbe\u7f6e\uff08Robert Abraham\u3001Teodor Sigaev\uff09</p>", "text": "\u5141\u8bb8 GIN \u7d22\u5f15\u6784\u5efa\u6709\u6548\u5229\u7528\u5927\u4e8e 1 GB \u7684maintenance_work_mem\u8bbe\u7f6e\uff08Robert Abraham\u3001Teodor Sigaev\uff09", "title": "\u5141\u8bb8 GIN \u7d22\u5f15\u6784\u5efa\u6709\u6548\u5229\u7528\u5927\u4e8e 1 GB \u7684maintenance_work_mem\u8bbe\u7f6e", "commits": [], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.3", "source_hash": "f60364880a957fc6988f88dd1e4515b8ab59368a2a8e4dcea04792f2996aba2c", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["30bb26b5e"]], "identity_text": "Allow GIN index builds to make effective use of guc-maintenance-work-mem settings larger than 1 GB (Robert Abraham, Teodor Sigaev)", "commit_aliases": ["30bb26b5e"], "source_commits": ["30bb26b5e"], "source_entry_id": "9.6.0/changes/003", "db_id": "4ce29972d221a2fc17eb6004eeba007e", "patch_ids": ["4ca858f33a0bdf40f3ccda9e8e69d6ba"], "statement_hash": "35971771b13fb98f802d2691bca58f62b89bf19715a50a5cf7fbf311493071ef", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-27fc6aec9e047d0b", "migration": false}, {"id": "9.6.0-e3add0e917284ce8", "cves": [], "html": "<p>\u628a\u4ece GIN \u7d22\u5f15\u672a\u51b3\u5217\u8868\u5220\u9664\u7684\u9875\u7acb\u5373\u52a0\u5165\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\uff08Jeff Janes\u3001Teodor Sigaev\uff09</p>\n<p>\u8fd9\u51cf\u5c11\u4e86\u8868\u4e0d\u5e38\u6e05\u7406\u65f6\u7684\u81a8\u80c0\u3002</p>", "text": "\u628a\u4ece GIN \u7d22\u5f15\u672a\u51b3\u5217\u8868\u5220\u9664\u7684\u9875\u7acb\u5373\u52a0\u5165\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\uff08Jeff Janes\u3001Teodor Sigaev\uff09 \u8fd9\u51cf\u5c11\u4e86\u8868\u4e0d\u5e38\u6e05\u7406\u65f6\u7684\u81a8\u80c0\u3002", "title": "\u628a\u4ece GIN \u7d22\u5f15\u672a\u51b3\u5217\u8868\u5220\u9664\u7684\u9875\u7acb\u5373\u52a0\u5165\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04", "commits": [], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.3", "source_hash": "eafb290fe540de1f4663261e927934cd67bcd207a6a56a7ca81b3310c380a22f", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["dc943ad95"], ["e95680832"]], "identity_text": "Add pages deleted from a GIN index's pending list to the free space map immediately (Jeff Janes, Teodor Sigaev) This reduces bloat if the table is not vacuumed often.", "commit_aliases": ["dc943ad95", "e95680832"], "source_commits": ["dc943ad95", "e95680832"], "source_entry_id": "9.6.0/changes/004", "db_id": "7cc6c7bcaad396c7c5e880c1963c59c7", "patch_ids": ["10261b92ee30c9cf9e5f157477029a4e", "f38cdd78b4755b72996cce4e8f1bb761"], "statement_hash": "410daf0bb70805397c5304921174e09d8d1dd6dd6396e5e62e23f54190b4893c", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-e3add0e917284ce8", "migration": false}, {"id": "9.6.0-098873bc98a60d62", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/functions-admin.html#FUNCTIONS-ADMIN-INDEX\" title=\"9.26.8.\u00a0\u7d22\u5f15\u7ef4\u62a4\u51fd\u6570\"><code>gin_clean_pending_list()</code></a> \u51fd\u6570\u4ee5\u5141\u8bb8\u624b\u52a8\u8c03\u7528 GIN \u7d22\u5f15\u7684\u672a\u51b3\u5217\u8868\u6e05\u7406\uff08Jeff Janes\uff09</p>\n<p>\u4ee5\u524d\u8fd9\u79cd\u6e05\u7406\u53ea\u4f5c\u4e3a\u6e05\u7406\u6216\u5206\u6790\u7236\u8868\u7684\u526f\u4ea7\u54c1\u53d1\u751f\u3002</p>", "text": "\u6dfb\u52a0 gin_clean_pending_list() \u51fd\u6570\u4ee5\u5141\u8bb8\u624b\u52a8\u8c03\u7528 GIN \u7d22\u5f15\u7684\u672a\u51b3\u5217\u8868\u6e05\u7406\uff08Jeff Janes\uff09 \u4ee5\u524d\u8fd9\u79cd\u6e05\u7406\u53ea\u4f5c\u4e3a\u6e05\u7406\u6216\u5206\u6790\u7236\u8868\u7684\u526f\u4ea7\u54c1\u53d1\u751f\u3002", "title": "\u6dfb\u52a0 gin_clean_pending_list() \u51fd\u6570\u4ee5\u5141\u8bb8\u624b\u52a8\u8c03\u7528 GIN \u7d22\u5f15\u7684\u672a\u51b3\u5217\u8868\u6e05\u7406", "commits": [], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.3", "source_hash": "7d106a0569ed48a62f23267658939a246b82472f44c8af31f983a6b551e4eaac", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["7f46eaf03"]], "identity_text": "Add gin_clean_pending_list() function to allow manual invocation of pending-list cleanup for a GIN index (Jeff Janes) Formerly, such cleanup happened only as a byproduct of vacuuming or analyzing the parent table.", "commit_aliases": ["7f46eaf03"], "source_commits": ["7f46eaf03"], "source_entry_id": "9.6.0/changes/005", "db_id": "cc9b4f36b81b8f1228fe91ad2d4ada4c", "patch_ids": ["8e11c602027357db7c16f738cd62ec76"], "statement_hash": "c475a1156b69272cc6b02727cae9495ea09bc2dd5f745df1c6f70f6f5dfcf482", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-098873bc98a60d62", "migration": false}, {"id": "9.6.0-a82a719a6bb31f2e", "cves": [], "html": "<p>\u6539\u8fdb <a href=\"/docs/9.6/gist.html\" title=\"\u7b2c\u00a061\u00a0\u7ae0\u00a0GiST \u7d22\u5f15\">GiST</a> \u7d22\u5f15\u4e2d\u6b7b\u7d22\u5f15\u5143\u7ec4\u7684\u5904\u7406\uff08Anastasia Lubennikova\uff09</p>\n<p>\u73b0\u5728\u5f53\u7d22\u5f15\u626b\u63cf\u6ce8\u610f\u5230\u76f8\u5e94\u7684\u5806\u5143\u7ec4\u5df2\u6b7b\u65f6\uff0c\u6b7b\u7d22\u5f15\u5143\u7ec4\u4f1a\u88ab\u5982\u6b64\u6807\u8bb0\u3002\u63d2\u5165\u5143\u7ec4\u65f6\uff0c\u6807\u8bb0\u4e3a\u6b7b\u7684\u5143\u7ec4\u5c06\u5728\u9700\u8981\u4e3a\u9875\u9762\u817e\u51fa\u7a7a\u95f4\u65f6\u88ab\u79fb\u9664\u3002</p>", "text": "\u6539\u8fdb GiST \u7d22\u5f15\u4e2d\u6b7b\u7d22\u5f15\u5143\u7ec4\u7684\u5904\u7406\uff08Anastasia Lubennikova\uff09 \u73b0\u5728\u5f53\u7d22\u5f15\u626b\u63cf\u6ce8\u610f\u5230\u76f8\u5e94\u7684\u5806\u5143\u7ec4\u5df2\u6b7b\u65f6\uff0c\u6b7b\u7d22\u5f15\u5143\u7ec4\u4f1a\u88ab\u5982\u6b64\u6807\u8bb0\u3002\u63d2\u5165\u5143\u7ec4\u65f6\uff0c\u6807\u8bb0\u4e3a\u6b7b\u7684\u5143\u7ec4\u5c06\u5728\u9700\u8981\u4e3a\u9875\u9762\u817e\u51fa\u7a7a\u95f4\u65f6\u88ab\u79fb\u9664\u3002", "title": "\u6539\u8fdb GiST \u7d22\u5f15\u4e2d\u6b7b\u7d22\u5f15\u5143\u7ec4\u7684\u5904\u7406", "commits": [], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.3", "source_hash": "0ce368e5a50fc34a166d6896a7bccc61e0bcd655ec7daf93bcc54d3f81d01ead", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["013ebc0a7"], ["22f519c92"]], "identity_text": "Improve handling of dead index tuples in GiST indexes (Anastasia Lubennikova) Dead index tuples are now marked as such when an index scan notices that the corresponding heap tuple is dead. When inserting tuples, marked-dead tuples will be removed if needed to make space on the page.", "commit_aliases": ["013ebc0a7", "22f519c92"], "source_commits": ["013ebc0a7", "22f519c92"], "source_entry_id": "9.6.0/changes/006", "db_id": "66e2a9b5ebfdbb5ce043724ccd8e3568", "patch_ids": ["66da618d9659de6fd39a70cc2bfe2a26", "6ba8061fa9230605f7a6154173258801"], "statement_hash": "df31c6cfa41bab1ebe5108924eb9c5b710b31c60d5b24d42021a9247dec6b953", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-a82a719a6bb31f2e", "migration": false}, {"id": "9.6.0-90162d136ed6492a", "cves": [], "html": "<p>\u4e3a <code>box</code> \u7c7b\u578b\u6dfb\u52a0 <a href=\"/docs/9.6/spgist.html\" title=\"\u7b2c\u00a062\u00a0\u7ae0\u00a0SP-GiST \u7d22\u5f15\">SP-GiST</a> \u64cd\u4f5c\u7b26\u7c7b\uff08Alexander Lebedev\uff09</p>", "text": "\u4e3a box \u7c7b\u578b\u6dfb\u52a0 SP-GiST \u64cd\u4f5c\u7b26\u7c7b\uff08Alexander Lebedev\uff09", "title": "\u4e3a box \u7c7b\u578b\u6dfb\u52a0 SP-GiST \u64cd\u4f5c\u7b26\u7c7b", "commits": [], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.3", "source_hash": "ddec185ba133b413543f06f77ab74df397c068ba8307689d1aefac9082917cf1", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["acdf2a8b3"]], "identity_text": "Add an SP-GiST operator class for type box (Alexander Lebedev)", "commit_aliases": ["acdf2a8b3"], "source_commits": ["acdf2a8b3"], "source_entry_id": "9.6.0/changes/007", "db_id": "3c2849a46fd2303223d7ce30ccab4cf0", "patch_ids": ["b28ef3cb630b33433ee457a8e40e09af"], "statement_hash": "0cb6eb84545f6f2d371db0d960fa176f034c89817b394201d97a8c27e25b7c07", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-90162d136ed6492a", "migration": false}, {"id": "9.6.0-85c912a2d26d75e5", "cves": [], "html": "<p>\u901a\u8fc7\u5728\u6267\u884c\u5916\u90e8\u6392\u5e8f\u6b65\u9aa4\u65f6\u4f7f\u7528\u5feb\u901f\u6392\u5e8f\u800c\u975e\u66ff\u6362\u9009\u62e9\u6392\u5e8f\u6765\u6539\u8fdb\u6392\u5e8f\u6027\u80fd\uff08Peter Geoghegan\uff09</p>\n<p>\u65b0\u65b9\u6cd5\u5bf9\u5178\u578b\u7f13\u5b58\u5927\u5c0f\u548c\u6570\u636e\u91cf\u66f4\u597d\u5730\u5229\u7528\u4e86 <acronym>CPU</acronym> \u7f13\u5b58\u3002\u5fc5\u8981\u65f6\u53ef\u4ee5\u901a\u8fc7\u65b0\u914d\u7f6e\u53c2\u6570<a href=\"/docs/9.6/runtime-config-resource.html#GUC-REPLACEMENT-SORT-TUPLES\">replacement_sort_tuples</a>\u8c03\u6574\u884c\u4e3a\u3002</p>", "text": "\u901a\u8fc7\u5728\u6267\u884c\u5916\u90e8\u6392\u5e8f\u6b65\u9aa4\u65f6\u4f7f\u7528\u5feb\u901f\u6392\u5e8f\u800c\u975e\u66ff\u6362\u9009\u62e9\u6392\u5e8f\u6765\u6539\u8fdb\u6392\u5e8f\u6027\u80fd\uff08Peter Geoghegan\uff09 \u65b0\u65b9\u6cd5\u5bf9\u5178\u578b\u7f13\u5b58\u5927\u5c0f\u548c\u6570\u636e\u91cf\u66f4\u597d\u5730\u5229\u7528\u4e86 CPU \u7f13\u5b58\u3002\u5fc5\u8981\u65f6\u53ef\u4ee5\u901a\u8fc7\u65b0\u914d\u7f6e\u53c2\u6570replacement_sort_tuples\u8c03\u6574\u884c\u4e3a\u3002", "title": "\u901a\u8fc7\u5728\u6267\u884c\u5916\u90e8\u6392\u5e8f\u6b65\u9aa4\u65f6\u4f7f\u7528\u5feb\u901f\u6392\u5e8f\u800c\u975e\u66ff\u6362\u9009\u62e9\u6392\u5e8f\u6765\u6539\u8fdb\u6392\u5e8f\u6027\u80fd", "commits": [], "section": "\u670d\u52a1\u5668 / \u6392\u5e8f", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.4", "source_hash": "e2edf68efa7ac0dfccec3849e773c8f72f65190e12de2a7a4f07198571f9cf4d", "section_path": ["\u670d\u52a1\u5668", "\u6392\u5e8f"], "commit_groups": [["0011c0091"], ["071180377"], ["96ba40c0f"]], "identity_text": "Improve sorting performance by using quicksort, not replacement selection sort, when performing external sort steps (Peter Geoghegan) The new approach makes better use of the CPU cache for typical cache sizes and data volumes. Where necessary, the behavior can be adjusted via the new configuration parameter guc-replacement-sort-tuples .", "commit_aliases": ["0011c0091", "071180377", "96ba40c0f"], "source_commits": ["0011c0091", "071180377", "96ba40c0f"], "source_entry_id": "9.6.0/changes/008", "db_id": "89f607a2f70352ab1f4ec4b3d1c6c8ed", "patch_ids": ["1d67c30b3ab9e0e4e76c20b8ce75e8a8", "3b4005a2784f490d6718be156a4ce7e9", "61ea6a9b76ec618b35a63dc3405a3441"], "statement_hash": "22d88b29a61f697efbf7316fe5336f0db6bb4b3a43fb0687ea7e99d154675206", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-85c912a2d26d75e5", "migration": false}, {"id": "9.6.0-6e0198d2559a745f", "cves": [], "html": "<p>\u52a0\u901f\u540c\u4e00\u5b57\u7b26\u4e32\u51fa\u73b0\u591a\u6b21\u7684\u6587\u672c\u6392\u5e8f\uff08Peter Geoghegan\uff09</p>", "text": "\u52a0\u901f\u540c\u4e00\u5b57\u7b26\u4e32\u51fa\u73b0\u591a\u6b21\u7684\u6587\u672c\u6392\u5e8f\uff08Peter Geoghegan\uff09", "title": "\u52a0\u901f\u540c\u4e00\u5b57\u7b26\u4e32\u51fa\u73b0\u591a\u6b21\u7684\u6587\u672c\u6392\u5e8f", "commits": [], "section": "\u670d\u52a1\u5668 / \u6392\u5e8f", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.4", "source_hash": "c8af6c34fffad748e6d99e9914d2fd5011de2341b95e06d6238965f30c99ed7f", "section_path": ["\u670d\u52a1\u5668", "\u6392\u5e8f"], "commit_groups": [["0e57b4d8b"], ["5be94a9eb"]], "identity_text": "Speed up text sorts where the same string occurs multiple times (Peter Geoghegan)", "commit_aliases": ["0e57b4d8b", "5be94a9eb"], "source_commits": ["0e57b4d8b", "5be94a9eb"], "source_entry_id": "9.6.0/changes/009", "db_id": "43ab90e69700b0c832859e3fe79bb1b9", "patch_ids": ["30f408ab95f1d3581cb193feb274852f", "584065102f06d557ea356dc113358601"], "statement_hash": "58ebb9ad07b68ee30a4c0d26c5c5d95050958bc133823c19b8eee51285ecadf3", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-6e0198d2559a745f", "migration": false}, {"id": "9.6.0-2555a54f89a7862e", "cves": [], "html": "<p>\u901a\u8fc7\u4f7f\u7528<span>\u201c<span>\u7f29\u5199</span>\u201d</span>\u952e\u52a0\u901f <code>uuid</code>\u3001<code>bytea</code> \u548c <code>char(n)</code> \u5b57\u6bb5\u7684\u6392\u5e8f\uff08Peter Geoghegan\uff09</p>\n<p>\u5bf9\u975e\u9ed8\u8ba4\u64cd\u4f5c\u7b26\u7c7b <a href=\"/docs/9.6/indexes-opclass.html\" title=\"11.9.\u00a0\u64cd\u4f5c\u7b26\u7c7b\u548c\u64cd\u4f5c\u7b26\u65cf\"><code>text_pattern_ops</code></a>\u3001<code>varchar_pattern_ops</code> \u548c <code>bpchar_pattern_ops</code> \u4e5f\u6dfb\u52a0\u4e86\u7f29\u5199\u952e\u652f\u6301\u3002\u6709\u5e8f\u96c6\u805a\u5408\u7684\u5904\u7406\u73b0\u5728\u4e5f\u53ef\u4ee5\u5229\u7528\u7f29\u5199\u952e\u3002</p>", "text": "\u901a\u8fc7\u4f7f\u7528\u201c\u7f29\u5199\u201d\u952e\u52a0\u901f uuid\u3001bytea \u548c char(n) \u5b57\u6bb5\u7684\u6392\u5e8f\uff08Peter Geoghegan\uff09 \u5bf9\u975e\u9ed8\u8ba4\u64cd\u4f5c\u7b26\u7c7b text_pattern_ops\u3001varchar_pattern_ops \u548c bpchar_pattern_ops \u4e5f\u6dfb\u52a0\u4e86\u7f29\u5199\u952e\u652f\u6301\u3002\u6709\u5e8f\u96c6\u805a\u5408\u7684\u5904\u7406\u73b0\u5728\u4e5f\u53ef\u4ee5\u5229\u7528\u7f29\u5199\u952e\u3002", "title": "\u901a\u8fc7\u4f7f\u7528\u201c\u7f29\u5199\u201d\u952e\u52a0\u901f uuid\u3001bytea \u548c char(n) \u5b57\u6bb5\u7684\u6392\u5e8f", "commits": [], "section": "\u670d\u52a1\u5668 / \u6392\u5e8f", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.4", "source_hash": "54d3d5453b0b6269e7e909d7ce56e71750b5c2227d4fe12c5dabdfdf5955c49d", "section_path": ["\u670d\u52a1\u5668", "\u6392\u5e8f"], "commit_groups": [["a76ef15d9"], ["b47b4dbf6"], ["f1f5ec1ef"]], "identity_text": "Speed up sorting of uuid, bytea, and char(n) fields by using abbreviated keys (Peter Geoghegan) Support for abbreviated keys has also been added to the non-default operator classes text_pattern_ops, varchar_pattern_ops, and bpchar_pattern_ops. Processing of ordered-set aggregates can also now exploit abbreviated keys.", "commit_aliases": ["a76ef15d9", "b47b4dbf6", "f1f5ec1ef"], "source_commits": ["a76ef15d9", "b47b4dbf6", "f1f5ec1ef"], "source_entry_id": "9.6.0/changes/010", "db_id": "5496090e79dc2420a800bbf1a219ae33", "patch_ids": ["09adea115dbeca4d15216d8d10cb3923", "73f5c221e4c28ae5bfca36995402f01f", "a6010cb4597af4647a1f2e193709e20d"], "statement_hash": "a832061263c6c1925ad3ee1394ad63d1bf65a4dfe868222ed7aa65cac4b5c43f", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-2555a54f89a7862e", "migration": false}, {"id": "9.6.0-e392f7ddbc2cec2a", "cves": [], "html": "<p>\u901a\u8fc7\u5728\u6392\u5e8f\u671f\u95f4\u628a <acronym>TID</acronym> \u5f53\u4f5c 64 \u4f4d\u6574\u6570\u52a0\u901f <code>CREATE INDEX CONCURRENTLY</code>\uff08Peter Geoghegan\uff09</p>", "text": "\u901a\u8fc7\u5728\u6392\u5e8f\u671f\u95f4\u628a TID \u5f53\u4f5c 64 \u4f4d\u6574\u6570\u52a0\u901f CREATE INDEX CONCURRENTLY\uff08Peter Geoghegan\uff09", "title": "\u901a\u8fc7\u5728\u6392\u5e8f\u671f\u95f4\u628a TID \u5f53\u4f5c 64 \u4f4d\u6574\u6570\u52a0\u901f CREATE INDEX CONCURRENTLY", "commits": [], "section": "\u670d\u52a1\u5668 / \u6392\u5e8f", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.4", "source_hash": "7d86d7188f5b2885cb9f44468d66d8caad378f4f672e9bc5768ff5ff4d2f9b44", "section_path": ["\u670d\u52a1\u5668", "\u6392\u5e8f"], "commit_groups": [["b648b7034"]], "identity_text": "Speed up CREATE INDEX CONCURRENTLY by treating TIDs as 64-bit integers during sorting (Peter Geoghegan)", "commit_aliases": ["b648b7034"], "source_commits": ["b648b7034"], "source_entry_id": "9.6.0/changes/011", "db_id": "87625ef8a2c4ed0a64be355a66b888fe", "patch_ids": ["724e01b95c2b479fab8d073239e992e4"], "statement_hash": "2639e4347a0cd082c50802403801d85037498d84d5dfd15fd3d54d1426584b54", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-e392f7ddbc2cec2a", "migration": false}, {"id": "9.6.0-d11b7c057b7f458f", "cves": [], "html": "<p>\u51cf\u5c11\u5bf9 <code>ProcArrayLock</code> \u7684\u4e89\u7528\uff08Amit Kapila\u3001Robert Haas\uff09</p>", "text": "\u51cf\u5c11\u5bf9 ProcArrayLock \u7684\u4e89\u7528\uff08Amit Kapila\u3001Robert Haas\uff09", "title": "\u51cf\u5c11\u5bf9 ProcArrayLock \u7684\u4e89\u7528", "commits": [], "section": "\u670d\u52a1\u5668 / \u9501\u5b9a", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.5", "source_hash": "23f6c0bd2b76e2540b6f8d1fd54ff19344727e4ac0ed9ceac4c2f93fc3e95ee9", "section_path": ["\u670d\u52a1\u5668", "\u9501\u5b9a"], "commit_groups": [["0e141c0fb"], ["4aec49899"]], "identity_text": "Reduce contention for the ProcArrayLock (Amit Kapila, Robert Haas)", "commit_aliases": ["0e141c0fb", "4aec49899"], "source_commits": ["0e141c0fb", "4aec49899"], "source_entry_id": "9.6.0/changes/012", "db_id": "5beef537d00340ddc362c29a43c6b141", "patch_ids": ["703c7b427759194c0907b6bd3fa3a011", "9c6497cefe2f8be4f23aeb88c413fa0a"], "statement_hash": "1e0a9b23a779a64a676b22cc0e0aeab1433580b7628c5030ccc05b3e6ebd8202", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-d11b7c057b7f458f", "migration": false}, {"id": "9.6.0-9a5e0e03fb19987d", "cves": [], "html": "<p>\u901a\u8fc7\u628a\u7f13\u51b2\u533a\u5185\u5bb9\u9501\u79fb\u5165\u7f13\u51b2\u533a\u63cf\u8ff0\u7b26\u6765\u6539\u8fdb\u6027\u80fd\uff08Andres Freund\u3001Simon Riggs\uff09</p>", "text": "\u901a\u8fc7\u628a\u7f13\u51b2\u533a\u5185\u5bb9\u9501\u79fb\u5165\u7f13\u51b2\u533a\u63cf\u8ff0\u7b26\u6765\u6539\u8fdb\u6027\u80fd\uff08Andres Freund\u3001Simon Riggs\uff09", "title": "\u901a\u8fc7\u628a\u7f13\u51b2\u533a\u5185\u5bb9\u9501\u79fb\u5165\u7f13\u51b2\u533a\u63cf\u8ff0\u7b26\u6765\u6539\u8fdb\u6027\u80fd", "commits": [], "section": "\u670d\u52a1\u5668 / \u9501\u5b9a", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.5", "source_hash": "b9f7d081c338ebd8254d0c787ffbdc0068bbb4b9cd5de6677271fb9ff9f29e72", "section_path": ["\u670d\u52a1\u5668", "\u9501\u5b9a"], "commit_groups": [["6150a1b08"]], "identity_text": "Improve performance by moving buffer content locks into the buffer descriptors (Andres Freund, Simon Riggs)", "commit_aliases": ["6150a1b08"], "source_commits": ["6150a1b08"], "source_entry_id": "9.6.0/changes/013", "db_id": "2a8c0bf4123012399ff3825a19c9f23f", "patch_ids": ["0715445a72e691951db91c8b8320c978"], "statement_hash": "fd3cf081c54f9ddfff91b7f5c0198d10138e451c05943b0311fc9e764bb5123b", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-9a5e0e03fb19987d", "migration": false}, {"id": "9.6.0-7f0b390ecdb956f6", "cves": [], "html": "<p>\u7528\u539f\u5b50\u64cd\u4f5c\u66ff\u6362\u5171\u4eab\u7f13\u51b2\u533a\u5934\u81ea\u65cb\u9501\u4ee5\u6539\u8fdb\u53ef\u4f38\u7f29\u6027\uff08Alexander Korotkov\u3001Andres Freund\uff09</p>", "text": "\u7528\u539f\u5b50\u64cd\u4f5c\u66ff\u6362\u5171\u4eab\u7f13\u51b2\u533a\u5934\u81ea\u65cb\u9501\u4ee5\u6539\u8fdb\u53ef\u4f38\u7f29\u6027\uff08Alexander Korotkov\u3001Andres Freund\uff09", "title": "\u7528\u539f\u5b50\u64cd\u4f5c\u66ff\u6362\u5171\u4eab\u7f13\u51b2\u533a\u5934\u81ea\u65cb\u9501\u4ee5\u6539\u8fdb\u53ef\u4f38\u7f29\u6027", "commits": [], "section": "\u670d\u52a1\u5668 / \u9501\u5b9a", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.5", "source_hash": "b0db1115ecd211ba95f46383a21aed25f952667424b9c8e64cb9dcba884a55e4", "section_path": ["\u670d\u52a1\u5668", "\u9501\u5b9a"], "commit_groups": [["48354581a"]], "identity_text": "Replace shared-buffer header spinlocks with atomic operations to improve scalability (Alexander Korotkov, Andres Freund)", "commit_aliases": ["48354581a"], "source_commits": ["48354581a"], "source_entry_id": "9.6.0/changes/014", "db_id": "853a98e108d16d9ebce23900c2258fdf", "patch_ids": ["ad76e7d55d2739f6979af664af3b0ec5"], "statement_hash": "a26bb0411114c7bf718653d668127378670bc2faba1487b4fbed99eaadf8c1a0", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-7f0b390ecdb956f6", "migration": false}, {"id": "9.6.0-3e16296b7439677a", "cves": [], "html": "<p>\u4f7f\u7528\u539f\u5b50\u64cd\u4f5c\u800c\u975e\u81ea\u65cb\u9501\u4fdd\u62a4 <code>LWLock</code> \u7684\u7b49\u5f85\u961f\u5217\uff08Andres Freund\uff09</p>", "text": "\u4f7f\u7528\u539f\u5b50\u64cd\u4f5c\u800c\u975e\u81ea\u65cb\u9501\u4fdd\u62a4 LWLock \u7684\u7b49\u5f85\u961f\u5217\uff08Andres Freund\uff09", "title": "\u4f7f\u7528\u539f\u5b50\u64cd\u4f5c\u800c\u975e\u81ea\u65cb\u9501\u4fdd\u62a4 LWLock \u7684\u7b49\u5f85\u961f\u5217", "commits": [], "section": "\u670d\u52a1\u5668 / \u9501\u5b9a", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.5", "source_hash": "c7236ca5692b2010e572fd20c5006d7339112276a2de57e3d82d2a0f933372e2", "section_path": ["\u670d\u52a1\u5668", "\u9501\u5b9a"], "commit_groups": [["008608b9d"]], "identity_text": "Use atomic operations, rather than a spinlock, to protect an LWLock's wait queue (Andres Freund)", "commit_aliases": ["008608b9d"], "source_commits": ["008608b9d"], "source_entry_id": "9.6.0/changes/015", "db_id": "e478df8e82eecb62f0cbcf8293a7c129", "patch_ids": ["f905a273abc22e03c4f227bcade14753"], "statement_hash": "f2072757e70786233965b31c28bae6482ed0d704ffbed399efcf25877d2ea364", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-3e16296b7439677a", "migration": false}, {"id": "9.6.0-f1e663f667cf7bba", "cves": [], "html": "<p>\u5bf9\u5171\u4eab\u54c8\u5e0c\u8868\u7a7a\u95f2\u5217\u8868\u5206\u533a\u4ee5\u51cf\u5c11\u591a <acronym>CPU</acronym> \u63d2\u69fd\u670d\u52a1\u5668\u4e0a\u7684\u4e89\u7528\uff08Aleksander Alekseev\uff09</p>", "text": "\u5bf9\u5171\u4eab\u54c8\u5e0c\u8868\u7a7a\u95f2\u5217\u8868\u5206\u533a\u4ee5\u51cf\u5c11\u591a CPU \u63d2\u69fd\u670d\u52a1\u5668\u4e0a\u7684\u4e89\u7528\uff08Aleksander Alekseev\uff09", "title": "\u5bf9\u5171\u4eab\u54c8\u5e0c\u8868\u7a7a\u95f2\u5217\u8868\u5206\u533a\u4ee5\u51cf\u5c11\u591a CPU \u63d2\u69fd\u670d\u52a1\u5668\u4e0a\u7684\u4e89\u7528", "commits": [], "section": "\u670d\u52a1\u5668 / \u9501\u5b9a", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.5", "source_hash": "6e61dea0ac580ae9828d0f63b6ce3118a61dd8713f92beb8eaafa5b322b3282e", "section_path": ["\u670d\u52a1\u5668", "\u9501\u5b9a"], "commit_groups": [["44ca4022f"]], "identity_text": "Partition the shared hash table freelist to reduce contention on multi-CPU-socket servers (Aleksander Alekseev)", "commit_aliases": ["44ca4022f"], "source_commits": ["44ca4022f"], "source_entry_id": "9.6.0/changes/016", "db_id": "628e3ed0a19b8fb2651c9c9768180621", "patch_ids": ["533b89668d0219b15c67700234c75829"], "statement_hash": "be12dffe344123e81c19a9f1ec3d8a2d25a3d9b49b50b3cd98601618160d43b6", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-f1e663f667cf7bba", "migration": false}, {"id": "9.6.0-8aecdd91c6c4f804", "cves": [], "html": "<p>\u51cf\u5c11\u5907\u5e93\u670d\u52a1\u5668\u91cd\u653e btree \u7d22\u5f15\u6e05\u7406\u64cd\u4f5c\u671f\u95f4\u7684\u4e92\u9501\uff08Simon Riggs\uff09</p>\n<p>\u6b64\u66f4\u6539\u907f\u514d\u4e86\u91cd\u653e\u8fd9\u79cd\u64cd\u4f5c\u671f\u95f4\u6709\u65f6\u53d1\u751f\u7684\u663e\u8457\u590d\u5236\u5ef6\u8fdf\u3002</p>", "text": "\u51cf\u5c11\u5907\u5e93\u670d\u52a1\u5668\u91cd\u653e btree \u7d22\u5f15\u6e05\u7406\u64cd\u4f5c\u671f\u95f4\u7684\u4e92\u9501\uff08Simon Riggs\uff09 \u6b64\u66f4\u6539\u907f\u514d\u4e86\u91cd\u653e\u8fd9\u79cd\u64cd\u4f5c\u671f\u95f4\u6709\u65f6\u53d1\u751f\u7684\u663e\u8457\u590d\u5236\u5ef6\u8fdf\u3002", "title": "\u51cf\u5c11\u5907\u5e93\u670d\u52a1\u5668\u91cd\u653e btree \u7d22\u5f15\u6e05\u7406\u64cd\u4f5c\u671f\u95f4\u7684\u4e92\u9501", "commits": [], "section": "\u670d\u52a1\u5668 / \u9501\u5b9a", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.5", "source_hash": "be7da5bd2f80dfb039a1c694aeb3f62aa80ef5de76b67e73b6d6b5023255cb50", "section_path": ["\u670d\u52a1\u5668", "\u9501\u5b9a"], "commit_groups": [["3e4b7d879"], ["687f2cd7a"]], "identity_text": "Reduce interlocking on standby servers during the replay of btree index vacuuming operations (Simon Riggs) This change avoids substantial replication delays that sometimes occurred while replaying such operations.", "commit_aliases": ["3e4b7d879", "687f2cd7a"], "source_commits": ["3e4b7d879", "687f2cd7a"], "source_entry_id": "9.6.0/changes/017", "db_id": "1e687def3ff3806f736271ab00c2a6b2", "patch_ids": ["15a49227310ab6acfdd0b797d16ea019", "821d6dbbd4f4106b03b3aa706575182a"], "statement_hash": "dc84418d32241fe11b81bb0644e895a5be4e0249e5a2cca2410ac63939e2303e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-8aecdd91c6c4f804", "migration": false}, {"id": "9.6.0-407134ac028ca640", "cves": [], "html": "<p>\u6539\u8fdb <code>ANALYZE</code> \u5bf9\u6709\u8bb8\u591a\u7a7a\u503c\u7684\u5217\u7684\u4f30\u8ba1\uff08Tomas Vondra\u3001Alex Shulgin\uff09</p>\n<p>\u6b64\u524d <code>ANALYZE</code> \u503e\u5411\u4e8e\u4f4e\u4f30\u6709\u8bb8\u591a <code>NULL</code> \u7684\u5217\u4e2d\u975e <code>NULL</code> \u4e0d\u540c\u503c\u7684\u6570\u91cf\uff0c\u8ba1\u7b97\u6700\u5e38\u89c1\u503c\u4e5f\u4e0d\u51c6\u786e\u3002</p>", "text": "\u6539\u8fdb ANALYZE \u5bf9\u6709\u8bb8\u591a\u7a7a\u503c\u7684\u5217\u7684\u4f30\u8ba1\uff08Tomas Vondra\u3001Alex Shulgin\uff09 \u6b64\u524d ANALYZE \u503e\u5411\u4e8e\u4f4e\u4f30\u6709\u8bb8\u591a NULL \u7684\u5217\u4e2d\u975e NULL \u4e0d\u540c\u503c\u7684\u6570\u91cf\uff0c\u8ba1\u7b97\u6700\u5e38\u89c1\u503c\u4e5f\u4e0d\u51c6\u786e\u3002", "title": "\u6539\u8fdb ANALYZE \u5bf9\u6709\u8bb8\u591a\u7a7a\u503c\u7684\u5217\u7684\u4f30\u8ba1", "commits": [], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668\u7edf\u8ba1\u4fe1\u606f", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.6", "source_hash": "a95db36cb318cfb85cd1fb669ee505b0f260a1107ab18a397b8a85cdd7adfb69", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668\u7edf\u8ba1\u4fe1\u606f"], "commit_groups": [["391159e03"], ["3d3bf62f3"], ["be4b4dc75"]], "identity_text": "Improve ANALYZE's estimates for columns with many nulls (Tomas Vondra, Alex Shulgin) Previously ANALYZE tended to underestimate the number of non-NULL distinct values in a column with many NULLs, and was also inaccurate in computing the most-common values.", "commit_aliases": ["391159e03", "3d3bf62f3", "be4b4dc75"], "source_commits": ["391159e03", "3d3bf62f3", "be4b4dc75"], "source_entry_id": "9.6.0/changes/018", "db_id": "8c87736e436b84b5bcae3207c37c1533", "patch_ids": ["2d2dada1086542a313c8cd802a97ab52", "b9bc9c2c8df01d6b518c8e7180412f7e", "cd4b48faed68340af5cc5eee08bf036f"], "statement_hash": "0979a61cf9ca1d91957e6853645a5763285192c815bd5e875ad8b20cfad6d3cd", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-407134ac028ca640", "migration": false}, {"id": "9.6.0-c35df921b5a5993e", "cves": [], "html": "<p>\u6539\u8fdb\u89c4\u5212\u5668\u5bf9\u67e5\u8be2\u7ed3\u679c\u4e2d\u4e0d\u540c\u503c\u6570\u91cf\u7684\u4f30\u8ba1\uff08Tomas Vondra\uff09</p>", "text": "\u6539\u8fdb\u89c4\u5212\u5668\u5bf9\u67e5\u8be2\u7ed3\u679c\u4e2d\u4e0d\u540c\u503c\u6570\u91cf\u7684\u4f30\u8ba1\uff08Tomas Vondra\uff09", "title": "\u6539\u8fdb\u89c4\u5212\u5668\u5bf9\u67e5\u8be2\u7ed3\u679c\u4e2d\u4e0d\u540c\u503c\u6570\u91cf\u7684\u4f30\u8ba1", "commits": [], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668\u7edf\u8ba1\u4fe1\u606f", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.6", "source_hash": "46360575f2fc8461d43823245a6217e0d6b5542d807bd83651b1e2bf9280c13f", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668\u7edf\u8ba1\u4fe1\u606f"], "commit_groups": [["84f9a35e3"]], "identity_text": "Improve planner's estimate of the number of distinct values in a query result (Tomas Vondra)", "commit_aliases": ["84f9a35e3"], "source_commits": ["84f9a35e3"], "source_entry_id": "9.6.0/changes/019", "db_id": "a943b77d28ef57c29c4bd80738438103", "patch_ids": ["cabc0d5ff1e55cf86558d8994183318d"], "statement_hash": "ae2ee0645ff342d7fb07801c939610cdf731e858d2a3f90909a62b41e0a479e6", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-c35df921b5a5993e", "migration": false}, {"id": "9.6.0-0fd7b32a080bf374", "cves": [], "html": "<p>\u4f7f\u7528\u5916\u952e\u5173\u7cfb\u63a8\u65ad\u8fde\u63a5\u8c13\u8bcd\u7684\u9009\u62e9\u7387\uff08Tomas Vondra\u3001David Rowley\uff09</p>\n<p>\u5982\u679c\u8868 <code>t</code> \u6709\u5916\u952e\u9650\u5236\uff0c\u6bd4\u5982 <code>(a,b) REFERENCES r (x,y)</code>\uff0c\u90a3\u4e48\u8bf8\u5982 <code>t.a = r.x AND t.b = r.y</code> \u7684 <code>WHERE</code> \u6761\u4ef6\u5bf9\u6bcf\u4e2a <code>t</code> \u884c\u6700\u591a\u53ea\u80fd\u9009\u62e9\u4e00\u4e2a <code>r</code> \u884c\u3002\u89c4\u5212\u5668\u4ee5\u524d\u628a\u8fd9\u4e9b <code>AND</code> \u6761\u4ef6\u89c6\u4e3a\u72ec\u7acb\u7684\uff0c\u56e0\u6b64\u5e38\u5e38\u4e25\u91cd\u8bef\u4f30\u9009\u62e9\u7387\u3002\u73b0\u5728\u5b83\u628a <code>WHERE</code> \u6761\u4ef6\u4e0e\u9002\u7528\u7684\u5916\u952e\u7ea6\u675f\u6bd4\u8f83\u5e76\u4ea7\u751f\u66f4\u597d\u7684\u4f30\u8ba1\u3002</p>", "text": "\u4f7f\u7528\u5916\u952e\u5173\u7cfb\u63a8\u65ad\u8fde\u63a5\u8c13\u8bcd\u7684\u9009\u62e9\u7387\uff08Tomas Vondra\u3001David Rowley\uff09 \u5982\u679c\u8868 t \u6709\u5916\u952e\u9650\u5236\uff0c\u6bd4\u5982 (a,b) REFERENCES r (x,y)\uff0c\u90a3\u4e48\u8bf8\u5982 t.a = r.x AND t.b = r.y \u7684 WHERE \u6761\u4ef6\u5bf9\u6bcf\u4e2a t \u884c\u6700\u591a\u53ea\u80fd\u9009\u62e9\u4e00\u4e2a r \u884c\u3002\u89c4\u5212\u5668\u4ee5\u524d\u628a\u8fd9\u4e9b AND \u6761\u4ef6\u89c6\u4e3a\u72ec\u7acb\u7684\uff0c\u56e0\u6b64\u5e38\u5e38\u4e25\u91cd\u8bef\u4f30\u9009\u62e9\u7387\u3002\u73b0\u5728\u5b83\u628a WHERE \u6761\u4ef6\u4e0e\u9002\u7528\u7684\u5916\u952e\u7ea6\u675f\u6bd4\u8f83\u5e76\u4ea7\u751f\u66f4\u597d\u7684\u4f30\u8ba1\u3002", "title": "\u4f7f\u7528\u5916\u952e\u5173\u7cfb\u63a8\u65ad\u8fde\u63a5\u8c13\u8bcd\u7684\u9009\u62e9\u7387", "commits": [], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668\u7edf\u8ba1\u4fe1\u606f", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.6", "source_hash": "43de8bbac3d5862e6b6af3399da80b001a981c131d7f65b0386df5f85e52ffbe", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668\u7edf\u8ba1\u4fe1\u606f"], "commit_groups": [["100340e2d"], ["137805f89"], ["77ba61080"]], "identity_text": "Use foreign key relationships to infer selectivity for join predicates (Tomas Vondra, David Rowley) If a table t has a foreign key restriction, say (a,b) REFERENCES r (x,y), then a WHERE condition such as t.a = r.x AND t.b = r.y cannot select more than one r row per t row. The planner formerly considered these AND conditions to be independent and would often drastically misestimate selectivity as a result. Now it compares the WHERE conditions to applicable foreign key constraints and produces better estimates.", "commit_aliases": ["100340e2d", "137805f89", "77ba61080"], "source_commits": ["100340e2d", "137805f89", "77ba61080"], "source_entry_id": "9.6.0/changes/020", "db_id": "9559012b1bfc32eb348ea56b2797ba40", "patch_ids": ["2701ddbf4dc868e7f4bc2a2c595a3fbe", "54b53341a3d02c52e549ea2434a9e474", "a47e842ff02cc9940a333d7fb474a3ef"], "statement_hash": "4f1fe7a02041e7597130a9fe9e93334a866e9d686c7f2dff75278e1fc43470bf", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-0fd7b32a080bf374", "migration": false}, {"id": "9.6.0-e719521db276560f", "cves": [], "html": "<p>\u907f\u514d\u91cd\u65b0\u6e05\u7406\u53ea\u5305\u542b\u51bb\u7ed3\u5143\u7ec4\u7684\u9875\uff08Masahiko Sawada\u3001Robert Haas\u3001Andres Freund\uff09</p>\n<p>\u4ee5\u524d\u9632\u56de\u5377\u6e05\u7406\u5fc5\u987b\u8bbf\u95ee\u8868\u7684\u6bcf\u4e00\u9875\uff0c\u5373\u4f7f\u65e0\u4e8b\u53ef\u505a\u7684\u9875\u3002\u73b0\u5728\u53ea\u5305\u542b\u5df2\u51bb\u7ed3\u5143\u7ec4\u7684\u9875\u4f1a\u5728\u8868\u7684\u53ef\u89c1\u6027\u6620\u5c04\u4e2d\u88ab\u6807\u8bc6\uff0c\u5373\u4f7f\u5728\u9632\u6b62\u4e8b\u52a1\u56de\u5377\u65f6\u4e5f\u53ef\u4ee5\u88ab\u6e05\u7406\u8df3\u8fc7\u3002\u8fd9\u5e94\u80fd\u5927\u5927\u964d\u4f4e\u7ef4\u62a4\u5927\u90e8\u5206\u6570\u636e\u4e0d\u53d8\u7684\u5927\u8868\u7684\u4ee3\u4ef7\u3002</p>\n<p>\u5fc5\u8981\u65f6\u53ef\u4ee5\u7528\u65b0\u7684 <code>DISABLE_PAGE_SKIPPING</code> \u9009\u9879\u5f3a\u5236\u6e05\u7406\u5904\u7406\u5168\u51bb\u7ed3\u9875\u3002\u901a\u5e38\u6c38\u8fdc\u4e0d\u9700\u8981\u8fd9\u6837\u505a\uff0c\u4f46\u5b83\u53ef\u80fd\u6709\u52a9\u4e8e\u4ece\u53ef\u89c1\u6027\u6620\u5c04\u635f\u574f\u4e2d\u6062\u590d\u3002</p>", "text": "\u907f\u514d\u91cd\u65b0\u6e05\u7406\u53ea\u5305\u542b\u51bb\u7ed3\u5143\u7ec4\u7684\u9875\uff08Masahiko Sawada\u3001Robert Haas\u3001Andres Freund\uff09 \u4ee5\u524d\u9632\u56de\u5377\u6e05\u7406\u5fc5\u987b\u8bbf\u95ee\u8868\u7684\u6bcf\u4e00\u9875\uff0c\u5373\u4f7f\u65e0\u4e8b\u53ef\u505a\u7684\u9875\u3002\u73b0\u5728\u53ea\u5305\u542b\u5df2\u51bb\u7ed3\u5143\u7ec4\u7684\u9875\u4f1a\u5728\u8868\u7684\u53ef\u89c1\u6027\u6620\u5c04\u4e2d\u88ab\u6807\u8bc6\uff0c\u5373\u4f7f\u5728\u9632\u6b62\u4e8b\u52a1\u56de\u5377\u65f6\u4e5f\u53ef\u4ee5\u88ab\u6e05\u7406\u8df3\u8fc7\u3002\u8fd9\u5e94\u80fd\u5927\u5927\u964d\u4f4e\u7ef4\u62a4\u5927\u90e8\u5206\u6570\u636e\u4e0d\u53d8\u7684\u5927\u8868\u7684\u4ee3\u4ef7\u3002 \u5fc5\u8981\u65f6\u53ef\u4ee5\u7528\u65b0\u7684 DISABLE_PAGE_SKIPPING \u9009\u9879\u5f3a\u5236\u6e05\u7406\u5904\u7406\u5168\u51bb\u7ed3\u9875\u3002\u901a\u5e38\u6c38\u8fdc\u4e0d\u9700\u8981\u8fd9\u6837\u505a\uff0c\u4f46\u5b83\u53ef\u80fd\u6709\u52a9\u4e8e\u4ece\u53ef\u89c1\u6027\u6620\u5c04\u635f\u574f\u4e2d\u6062\u590d\u3002", "title": "\u907f\u514d\u91cd\u65b0\u6e05\u7406\u53ea\u5305\u542b\u51bb\u7ed3\u5143\u7ec4\u7684\u9875", "commits": [], "section": "\u670d\u52a1\u5668 / VACUUM", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.7", "source_hash": "791dd74a9e701ebc3a1c7096d9a0545ae3758e09140d9831343e36f98dc40eed", "section_path": ["\u670d\u52a1\u5668", "VACUUM"], "commit_groups": [["7087166a8"], ["77a1d1e79"], ["a892234f8"], ["e7caacf73"], ["eca0f1db1"], ["ede62e56f"], ["fd31cd265"]], "identity_text": "Avoid re-vacuuming pages containing only frozen tuples (Masahiko Sawada, Robert Haas, Andres Freund) Formerly, anti-wraparound vacuum had to visit every page of a table, even pages where there was nothing to do. Now, pages containing only already-frozen tuples are identified in the table's visibility map, and can be skipped by vacuum even when doing transaction wraparound prevention. This should greatly reduce the cost of maintaining large tables containing mostly-unchanging data. If necessary, vacuum can be forced to process all-frozen pages using the new DISABLE_PAGE_SKIPPING option. Normally this should never be needed, but it might help in recovering from visibility-map corruption.", "commit_aliases": ["7087166a8", "77a1d1e79", "a892234f8", "e7caacf73", "eca0f1db1", "ede62e56f", "fd31cd265"], "source_commits": ["7087166a8", "77a1d1e79", "a892234f8", "e7caacf73", "eca0f1db1", "ede62e56f", "fd31cd265"], "source_entry_id": "9.6.0/changes/021", "db_id": "4fff634fe4c65021820b4bd34fc8f211", "patch_ids": ["21ffba8dbb99be578423d9caeeb4b596", "46b5239444d2206e8d737f14aecb7c5f", "7004db6bcc17020cac1d71f274921098", "92806e19fade111e9115f486514fe609", "97ef2bb9ec2cc404576b05e68bce1bee", "cf90194faf3e57137865c657653cf710", "fe487206466a53c35b498a9cd3ccf8ed"], "statement_hash": "9e874c3f9e475f9067323387496e6109b1db3bbe8aa383f2fdd55a6ec6f81d97", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-e719521db276560f", "migration": false}, {"id": "9.6.0-c3391392a88424a1", "cves": [], "html": "<p>\u907f\u514d <code>VACUUM</code> \u671f\u95f4\u65e0\u7528\u7684\u5806\u622a\u65ad\u5c1d\u8bd5\uff08Jeff Janes\u3001Tom Lane\uff09</p>\n<p>\u6b64\u66f4\u6539\u5728\u67d0\u4e9b\u4e0d\u53ef\u80fd\u622a\u65ad\u7684\u60c5\u51b5\u4e0b\u907f\u514d\u53d6\u5f97\u6392\u4ed6\u8868\u9501\u3002\u4e3b\u8981\u597d\u5904\u662f\u907f\u514d\u5907\u5e93\u670d\u52a1\u5668\u4e0a\u4e0d\u5fc5\u8981\u7684\u67e5\u8be2\u53d6\u6d88\u3002</p>", "text": "\u907f\u514d VACUUM \u671f\u95f4\u65e0\u7528\u7684\u5806\u622a\u65ad\u5c1d\u8bd5\uff08Jeff Janes\u3001Tom Lane\uff09 \u6b64\u66f4\u6539\u5728\u67d0\u4e9b\u4e0d\u53ef\u80fd\u622a\u65ad\u7684\u60c5\u51b5\u4e0b\u907f\u514d\u53d6\u5f97\u6392\u4ed6\u8868\u9501\u3002\u4e3b\u8981\u597d\u5904\u662f\u907f\u514d\u5907\u5e93\u670d\u52a1\u5668\u4e0a\u4e0d\u5fc5\u8981\u7684\u67e5\u8be2\u53d6\u6d88\u3002", "title": "\u907f\u514d VACUUM \u671f\u95f4\u65e0\u7528\u7684\u5806\u622a\u65ad\u5c1d\u8bd5", "commits": [], "section": "\u670d\u52a1\u5668 / VACUUM", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.7", "source_hash": "cb19d95cd0932a5405ec68ff26d164fb6e92782d5cb0fbe5ff2a63cb7076e5f1", "section_path": ["\u670d\u52a1\u5668", "VACUUM"], "commit_groups": [["e84290823"]], "identity_text": "Avoid useless heap-truncation attempts during VACUUM (Jeff Janes, Tom Lane) This change avoids taking an exclusive table lock in some cases where no truncation is possible. The main benefit comes from avoiding unnecessary query cancellations on standby servers.", "commit_aliases": ["e84290823"], "source_commits": ["e84290823"], "source_entry_id": "9.6.0/changes/022", "db_id": "45b7f2bf818d4a1361495de54844eebc", "patch_ids": ["e4778db577972045fdd29448b88eef25"], "statement_hash": "5550b274ddf97f0e0b8c4dc1dd7839cb509e95ab375281877bd6fd39a98dbaa1", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-c3391392a88424a1", "migration": false}, {"id": "9.6.0-f86c2b95fa4f1299", "cves": [], "html": "<p>\u5141\u8bb8\u65e7\u7684 <acronym>MVCC</acronym> \u5feb\u7167\u5728\u53ef\u914d\u7f6e\u7684\u8d85\u65f6\u540e\u5931\u6548\uff08Kevin Grittner\uff09</p>\n<p>\u901a\u5e38\uff0c\u88ab\u5220\u9664\u7684\u5143\u7ec4\u5728\u6700\u540e\u4e00\u4e2a\u53ef\u80fd<span>\u201c<span>\u770b\u5230</span>\u201d</span>\u5b83\u4eec\u7684\u4e8b\u52a1\u6d88\u5931\u4e4b\u524d\u4e0d\u80fd\u88ab\u6e05\u7406\u7269\u7406\u79fb\u9664\u3002\u56e0\u6b64\u4fdd\u6301\u6253\u5f00\u5f88\u957f\u65f6\u95f4\u7684\u4e8b\u52a1\u53ef\u80fd\u56e0\u4e3a\u7a7a\u95f4\u65e0\u6cd5\u56de\u6536\u800c\u5bfc\u81f4\u76f8\u5f53\u5927\u7684\u8868\u81a8\u80c0\u3002\u6b64\u7279\u6027\u5141\u8bb8\u901a\u8fc7\u65b0\u914d\u7f6e\u53c2\u6570<a href=\"/docs/9.6/runtime-config-resource.html#GUC-OLD-SNAPSHOT-THRESHOLD\">old_snapshot_threshold</a>\u5bf9 <acronym>MVCC</acronym> \u5feb\u7167\u4fdd\u8bc1\u6709\u6548\u7684\u65f6\u95f4\u8bbe\u7f6e\u57fa\u4e8e\u65f6\u95f4\u7684\u9650\u5236\u3002\u4e4b\u540e\u6b7b\u5143\u7ec4\u5c31\u6210\u4e3a\u79fb\u9664\u5019\u9009\u3002\u4f7f\u7528\u8fc7\u671f\u5feb\u7167\u7684\u4e8b\u52a1\u5982\u679c\u8bd5\u56fe\u8bfb\u53d6\u53ef\u80fd\u5305\u542b\u8fc7\u8fd9\u79cd\u6570\u636e\u7684\u9875\uff0c\u5c31\u4f1a\u5f97\u5230\u9519\u8bef\u3002</p>", "text": "\u5141\u8bb8\u65e7\u7684 MVCC \u5feb\u7167\u5728\u53ef\u914d\u7f6e\u7684\u8d85\u65f6\u540e\u5931\u6548\uff08Kevin Grittner\uff09 \u901a\u5e38\uff0c\u88ab\u5220\u9664\u7684\u5143\u7ec4\u5728\u6700\u540e\u4e00\u4e2a\u53ef\u80fd\u201c\u770b\u5230\u201d\u5b83\u4eec\u7684\u4e8b\u52a1\u6d88\u5931\u4e4b\u524d\u4e0d\u80fd\u88ab\u6e05\u7406\u7269\u7406\u79fb\u9664\u3002\u56e0\u6b64\u4fdd\u6301\u6253\u5f00\u5f88\u957f\u65f6\u95f4\u7684\u4e8b\u52a1\u53ef\u80fd\u56e0\u4e3a\u7a7a\u95f4\u65e0\u6cd5\u56de\u6536\u800c\u5bfc\u81f4\u76f8\u5f53\u5927\u7684\u8868\u81a8\u80c0\u3002\u6b64\u7279\u6027\u5141\u8bb8\u901a\u8fc7\u65b0\u914d\u7f6e\u53c2\u6570old_snapshot_threshold\u5bf9 MVCC \u5feb\u7167\u4fdd\u8bc1\u6709\u6548\u7684\u65f6\u95f4\u8bbe\u7f6e\u57fa\u4e8e\u65f6\u95f4\u7684\u9650\u5236\u3002\u4e4b\u540e\u6b7b\u5143\u7ec4\u5c31\u6210\u4e3a\u79fb\u9664\u5019\u9009\u3002\u4f7f\u7528\u8fc7\u671f\u5feb\u7167\u7684\u4e8b\u52a1\u5982\u679c\u8bd5\u56fe\u8bfb\u53d6\u53ef\u80fd\u5305\u542b\u8fc7\u8fd9\u79cd\u6570\u636e\u7684\u9875\uff0c\u5c31\u4f1a\u5f97\u5230\u9519\u8bef\u3002", "title": "\u5141\u8bb8\u65e7\u7684 MVCC \u5feb\u7167\u5728\u53ef\u914d\u7f6e\u7684\u8d85\u65f6\u540e\u5931\u6548", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "69332bc0fb59e4a23800d8dc0369de9eb65da2054b2a69818a91ea00e5cbd904", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["2cc41acd8"], ["3e2f3c2e4"], ["7e3da1c47"], ["848ef42bb"], ["9ee1cf04a"]], "identity_text": "Allow old MVCC snapshots to be invalidated after a configurable timeout (Kevin Grittner) Normally, deleted tuples cannot be physically removed by vacuuming until the last transaction that could see them is gone. A transaction that stays open for a long time can thus cause considerable table bloat because space cannot be recycled. This feature allows setting a time-based limit, via the new configuration parameter guc-old-snapshot-threshold , on how long an MVCC snapshot is guaranteed to be valid. After that, dead tuples are candidates for removal. A transaction using an outdated snapshot will get an error if it attempts to read a page that potentially could have contained such data.", "commit_aliases": ["2cc41acd8", "3e2f3c2e4", "7e3da1c47", "848ef42bb", "9ee1cf04a"], "source_commits": ["2cc41acd8", "3e2f3c2e4", "7e3da1c47", "848ef42bb", "9ee1cf04a"], "source_entry_id": "9.6.0/changes/023", "db_id": "8dc7583034097fdde5e06c9247ba9975", "patch_ids": ["0eb023861354c58f42d3c89d729234cb", "6857d4022c275e5ec2aa6863a72f8514", "6d11f00e76adc261071a3e2a0b072968", "bdace6f6a2935faa2f443646e422fee0", "eb9881a24b93006ad76cd2d7e7446047"], "statement_hash": "c6af328a6049869cb8e62207f827d6f73a69edc93c44d60af306ef4a53ee84dc", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-f86c2b95fa4f1299", "migration": false}, {"id": "9.6.0-5a62f47432e90e4d", "cves": [], "html": "<p>\u5ffd\u7565\u529f\u80fd\u4e0a\u4f9d\u8d56\u4e8e\u5176\u4ed6\u5217\u7684 <code>GROUP BY</code> \u5217\uff08David Rowley\uff09</p>\n<p>\u5982\u679c <code>GROUP BY</code> \u5b50\u53e5\u5305\u542b\u975e\u5ef6\u8fdf\u4e3b\u952e\u7684\u6240\u6709\u5217\u4ee5\u53ca\u540c\u4e00\u8868\u7684\u5176\u4ed6\u5217\uff0c\u90a3\u4e9b\u5176\u4ed6\u5217\u662f\u5197\u4f59\u7684\u3001\u53ef\u4ee5\u4ece\u5206\u7ec4\u4e2d\u4e22\u5f03\u3002\u8fd9\u5728\u8bb8\u591a\u5e38\u89c1\u573a\u666f\u4e2d\u8282\u7701\u8ba1\u7b97\u3002</p>", "text": "\u5ffd\u7565\u529f\u80fd\u4e0a\u4f9d\u8d56\u4e8e\u5176\u4ed6\u5217\u7684 GROUP BY \u5217\uff08David Rowley\uff09 \u5982\u679c GROUP BY \u5b50\u53e5\u5305\u542b\u975e\u5ef6\u8fdf\u4e3b\u952e\u7684\u6240\u6709\u5217\u4ee5\u53ca\u540c\u4e00\u8868\u7684\u5176\u4ed6\u5217\uff0c\u90a3\u4e9b\u5176\u4ed6\u5217\u662f\u5197\u4f59\u7684\u3001\u53ef\u4ee5\u4ece\u5206\u7ec4\u4e2d\u4e22\u5f03\u3002\u8fd9\u5728\u8bb8\u591a\u5e38\u89c1\u573a\u666f\u4e2d\u8282\u7701\u8ba1\u7b97\u3002", "title": "\u5ffd\u7565\u529f\u80fd\u4e0a\u4f9d\u8d56\u4e8e\u5176\u4ed6\u5217\u7684 GROUP BY \u5217", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "3b8bacb30f4c9c8047e6485457738431189ac2e50b06bd82ce47d40acf325a67", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["d4c3a156c"]], "identity_text": "Ignore GROUP BY columns that are functionally dependent on other columns (David Rowley) If a GROUP BY clause includes all columns of a non-deferred primary key, as well as other columns of the same table, those other columns are redundant and can be dropped from the grouping. This saves computation in many common cases.", "commit_aliases": ["d4c3a156c"], "source_commits": ["d4c3a156c"], "source_entry_id": "9.6.0/changes/024", "db_id": "5e7cbc86606cafafffa15497c84be1ef", "patch_ids": ["b6ee2fa10df0c6e8a0f39054ed05315c"], "statement_hash": "3d6b1fab112b9205540911c252eaa8b0aa6b90fbe7ae5057cc01e0860674ee5d", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-5a62f47432e90e4d", "migration": false}, {"id": "9.6.0-26541533724d92c3", "cves": [], "html": "<p>\u5f53\u90e8\u5206\u7d22\u5f15\u7684 <code>WHERE</code> \u5b50\u53e5\u5f15\u7528\u672a\u88ab\u7d22\u5f15\u7684\u5217\u65f6\uff0c\u5141\u8bb8\u5bf9\u5b83\u4f7f\u7528<a href=\"/docs/9.6/indexes-index-only-scans.html\" title=\"11.11.\u00a0\u4ec5\u7d22\u5f15\u626b\u63cf\">\u4ec5\u7d22\u5f15\u626b\u63cf</a>\uff08Tomas Vondra\u3001Kyotaro Horiguchi\uff09</p>\n<p>\u4f8b\u5982\u7531 <code>CREATE INDEX tidx_partial ON t(b) WHERE a &gt; 0</code> \u5b9a\u4e49\u7684\u7d22\u5f15\u73b0\u5728\u53ef\u4ee5\u88ab\u6307\u5b9a\u4e86 <code>WHERE a &gt; 0</code> \u4e14\u4e0d\u4ee5\u5176\u4ed6\u65b9\u5f0f\u4f7f\u7528 <code>a</code> \u7684\u67e5\u8be2\u7528\u4e8e\u4ec5\u7d22\u5f15\u626b\u63cf\u3002\u4ee5\u524d\u8fd9\u662f\u4e0d\u5141\u8bb8\u7684\uff0c\u56e0\u4e3a <code>a</code> \u672a\u88ab\u5217\u4e3a\u7d22\u5f15\u5217\u3002</p>", "text": "\u5f53\u90e8\u5206\u7d22\u5f15\u7684 WHERE \u5b50\u53e5\u5f15\u7528\u672a\u88ab\u7d22\u5f15\u7684\u5217\u65f6\uff0c\u5141\u8bb8\u5bf9\u5b83\u4f7f\u7528\u4ec5\u7d22\u5f15\u626b\u63cf\uff08Tomas Vondra\u3001Kyotaro Horiguchi\uff09 \u4f8b\u5982\u7531 CREATE INDEX tidx_partial ON t(b) WHERE a > 0 \u5b9a\u4e49\u7684\u7d22\u5f15\u73b0\u5728\u53ef\u4ee5\u88ab\u6307\u5b9a\u4e86 WHERE a > 0 \u4e14\u4e0d\u4ee5\u5176\u4ed6\u65b9\u5f0f\u4f7f\u7528 a \u7684\u67e5\u8be2\u7528\u4e8e\u4ec5\u7d22\u5f15\u626b\u63cf\u3002\u4ee5\u524d\u8fd9\u662f\u4e0d\u5141\u8bb8\u7684\uff0c\u56e0\u4e3a a \u672a\u88ab\u5217\u4e3a\u7d22\u5f15\u5217\u3002", "title": "\u5f53\u90e8\u5206\u7d22\u5f15\u7684 WHERE \u5b50\u53e5\u5f15\u7528\u672a\u88ab\u7d22\u5f15\u7684\u5217\u65f6\uff0c\u5141\u8bb8\u5bf9\u5b83\u4f7f\u7528\u4ec5\u7d22\u5f15\u626b\u63cf", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "d382a828fa7d8d1ffedebc36fbe3d12279ed32640acc13c76b407e6319c29a90", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["f9aefcb91"]], "identity_text": "Allow use of an index-only scan on a partial index when the index's WHERE clause references columns that are not indexed (Tomas Vondra, Kyotaro Horiguchi) For example, an index defined by CREATE INDEX tidx_partial ON t(b) WHERE a > 0 can now be used for an index-only scan by a query that specifies WHERE a > 0 and does not otherwise use a. Previously this was disallowed because a is not listed as an index column.", "commit_aliases": ["f9aefcb91"], "source_commits": ["f9aefcb91"], "source_entry_id": "9.6.0/changes/025", "db_id": "461cd50f77ba5110ad5fc304495c8d28", "patch_ids": ["279a399cf2efa25a5b5b4fce280a7d11"], "statement_hash": "0c05826880065e01d4c7527663ae519210c964bc18b399bb25c0afee416538f9", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-26541533724d92c3", "migration": false}, {"id": "9.6.0-c9e4e94dffe3996f", "cves": [], "html": "<p>\u6309\u6392\u5e8f\u987a\u5e8f\u6267\u884c\u68c0\u67e5\u70b9\u5199\uff08Fabien Coelho\u3001Andres Freund\uff09</p>\n<p>\u4ee5\u524d\u68c0\u67e5\u70b9\u4ee5\u810f\u9875\u78b0\u5de7\u51fa\u73b0\u5728\u5171\u4eab\u7f13\u51b2\u533a\u4e2d\u7684\u987a\u5e8f\uff08\u901a\u5e38\u8fd1\u4e4e\u968f\u673a\uff09\u5199\u51fa\u5b83\u4eec\u3002\u8fd9\u6027\u80fd\u5f88\u5dee\uff0c\u7279\u522b\u662f\u5728\u65cb\u8f6c\u4ecb\u8d28\u4e0a\u3002\u6b64\u66f4\u6539\u4f7f\u68c0\u67e5\u70b9\u9a71\u52a8\u7684\u5199\u6309\u6587\u4ef6\u548c\u5757\u53f7\u987a\u5e8f\u6267\u884c\uff0c\u5e76\u5728\u8868\u7a7a\u95f4\u4e4b\u95f4\u5e73\u8861\u3002</p>", "text": "\u6309\u6392\u5e8f\u987a\u5e8f\u6267\u884c\u68c0\u67e5\u70b9\u5199\uff08Fabien Coelho\u3001Andres Freund\uff09 \u4ee5\u524d\u68c0\u67e5\u70b9\u4ee5\u810f\u9875\u78b0\u5de7\u51fa\u73b0\u5728\u5171\u4eab\u7f13\u51b2\u533a\u4e2d\u7684\u987a\u5e8f\uff08\u901a\u5e38\u8fd1\u4e4e\u968f\u673a\uff09\u5199\u51fa\u5b83\u4eec\u3002\u8fd9\u6027\u80fd\u5f88\u5dee\uff0c\u7279\u522b\u662f\u5728\u65cb\u8f6c\u4ecb\u8d28\u4e0a\u3002\u6b64\u66f4\u6539\u4f7f\u68c0\u67e5\u70b9\u9a71\u52a8\u7684\u5199\u6309\u6587\u4ef6\u548c\u5757\u53f7\u987a\u5e8f\u6267\u884c\uff0c\u5e76\u5728\u8868\u7a7a\u95f4\u4e4b\u95f4\u5e73\u8861\u3002", "title": "\u6309\u6392\u5e8f\u987a\u5e8f\u6267\u884c\u68c0\u67e5\u70b9\u5199", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "1bb6a5f0702dac7b8b44663c858f147778cfa5ae6c29e5ba6c26e9d5611501d8", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["9cd00c457"]], "identity_text": "Perform checkpoint writes in sorted order (Fabien Coelho, Andres Freund) Previously, checkpoints wrote out dirty pages in whatever order they happen to appear in shared buffers, which usually is nearly random. That performs poorly, especially on rotating media. This change causes checkpoint-driven writes to be done in order by file and block number, and to be balanced across tablespaces.", "commit_aliases": ["9cd00c457"], "source_commits": ["9cd00c457"], "source_entry_id": "9.6.0/changes/026", "db_id": "68bd27b010217fe2e83e36e70ca9471b", "patch_ids": ["24e3f6d78c048c0c7d020762218a318f"], "statement_hash": "97f3fb4a95b032423deee21b15ed8bc40c8c82f8df69a466d5fe7b90b8d417a4", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-c9e4e94dffe3996f", "migration": false}, {"id": "9.6.0-c8c62edc91c0634d", "cves": [], "html": "<p>\u5728\u53ef\u884c\u4e4b\u5904\uff0c\u5728\u53ef\u914d\u7f6e\u6b21\u6570\u7684\u5199\u4e4b\u540e\u89e6\u53d1\u5185\u6838\u56de\u5199\uff0c\u4ee5\u9632\u6b62\u5185\u6838\u78c1\u76d8\u7f13\u51b2\u533a\u4e2d\u810f\u6570\u636e\u7684\u79ef\u7d2f\uff08Fabien Coelho\u3001Andres Freund\uff09</p>\n<p><span>PostgreSQL</span> \u628a\u6570\u636e\u5199\u5165\u5185\u6838\u7684\u78c1\u76d8\u7f13\u5b58\uff0c\u4e4b\u540e\u5728\u9002\u5f53\u65f6\u5019\u88ab\u5237\u5230\u7269\u7406\u5b58\u50a8\u3002\u8bb8\u591a\u64cd\u4f5c\u7cfb\u7edf\u5bf9\u6b64\u7ba1\u7406\u4e0d\u5584\uff0c\u5141\u8bb8\u5927\u91cf\u810f\u6570\u636e\u79ef\u7d2f\u540e\u624d\u51b3\u5b9a\u4e00\u6b21\u5168\u90e8\u5237\u51fa\uff0c\u5bfc\u81f4\u65b0 I/O \u8bf7\u6c42\u957f\u65f6\u95f4\u5ef6\u8fdf\u76f4\u5230\u5237\u5199\u5b8c\u6210\u3002\u6b64\u66f4\u6539\u5c1d\u8bd5\u901a\u8fc7\u5728\u53ef\u914d\u7f6e\u95f4\u9694\u540e\u663e\u5f0f\u8bf7\u6c42\u6570\u636e\u5237\u5199\u6765\u7f13\u89e3\u6b64\u95ee\u9898\u3002</p>\n<p>\u5728 Linux \u4e0a\u4e3a\u6b64\u4f7f\u7528 <code>sync_file_range()</code>\uff0c\u5e76\u4e14\u8be5\u7279\u6027\u5728 Linux \u4e0a\u9ed8\u8ba4\u6253\u5f00\uff0c\u56e0\u4e3a\u8be5\u51fd\u6570\u51e0\u4e4e\u6ca1\u6709\u7f3a\u70b9\u3002\u5982\u679c\u5176\u4ed6\u5e73\u53f0\u6709 <code>msync()</code> \u6216 <code>posix_fadvise()</code>\uff0c\u8fd9\u79cd\u5237\u5199\u80fd\u529b\u4e5f\u53ef\u7528\uff0c\u4f46\u8fd9\u4e9b\u63a5\u53e3\u6709\u4e00\u4e9b\u4e0d\u826f\u526f\u4f5c\u7528\uff0c\u56e0\u6b64\u8be5\u7279\u6027\u5728\u975e Linux \u5e73\u53f0\u4e0a\u9ed8\u8ba4\u7981\u7528\u3002</p>\n<p>\u65b0\u914d\u7f6e\u53c2\u6570<a href=\"/docs/9.6/runtime-config-resource.html#GUC-BACKEND-FLUSH-AFTER\">backend_flush_after</a>\u3001<a href=\"/docs/9.6/runtime-config-resource.html#GUC-BGWRITER-FLUSH-AFTER\">bgwriter_flush_after</a>\u3001<a href=\"/docs/9.6/runtime-config-wal.html#GUC-CHECKPOINT-FLUSH-AFTER\">checkpoint_flush_after</a>\u548c<a href=\"/docs/9.6/runtime-config-wal.html#GUC-WAL-WRITER-FLUSH-AFTER\">wal_writer_flush_after</a>\u63a7\u5236\u8fd9\u4e00\u884c\u4e3a\u3002</p>", "text": "\u5728\u53ef\u884c\u4e4b\u5904\uff0c\u5728\u53ef\u914d\u7f6e\u6b21\u6570\u7684\u5199\u4e4b\u540e\u89e6\u53d1\u5185\u6838\u56de\u5199\uff0c\u4ee5\u9632\u6b62\u5185\u6838\u78c1\u76d8\u7f13\u51b2\u533a\u4e2d\u810f\u6570\u636e\u7684\u79ef\u7d2f\uff08Fabien Coelho\u3001Andres Freund\uff09 PostgreSQL \u628a\u6570\u636e\u5199\u5165\u5185\u6838\u7684\u78c1\u76d8\u7f13\u5b58\uff0c\u4e4b\u540e\u5728\u9002\u5f53\u65f6\u5019\u88ab\u5237\u5230\u7269\u7406\u5b58\u50a8\u3002\u8bb8\u591a\u64cd\u4f5c\u7cfb\u7edf\u5bf9\u6b64\u7ba1\u7406\u4e0d\u5584\uff0c\u5141\u8bb8\u5927\u91cf\u810f\u6570\u636e\u79ef\u7d2f\u540e\u624d\u51b3\u5b9a\u4e00\u6b21\u5168\u90e8\u5237\u51fa\uff0c\u5bfc\u81f4\u65b0 I/O \u8bf7\u6c42\u957f\u65f6\u95f4\u5ef6\u8fdf\u76f4\u5230\u5237\u5199\u5b8c\u6210\u3002\u6b64\u66f4\u6539\u5c1d\u8bd5\u901a\u8fc7\u5728\u53ef\u914d\u7f6e\u95f4\u9694\u540e\u663e\u5f0f\u8bf7\u6c42\u6570\u636e\u5237\u5199\u6765\u7f13\u89e3\u6b64\u95ee\u9898\u3002 \u5728 Linux \u4e0a\u4e3a\u6b64\u4f7f\u7528 sync_file_range()\uff0c\u5e76\u4e14\u8be5\u7279\u6027\u5728 Linux \u4e0a\u9ed8\u8ba4\u6253\u5f00\uff0c\u56e0\u4e3a\u8be5\u51fd\u6570\u51e0\u4e4e\u6ca1\u6709\u7f3a\u70b9\u3002\u5982\u679c\u5176\u4ed6\u5e73\u53f0\u6709 msync() \u6216 posix_fadvise()\uff0c\u8fd9\u79cd\u5237\u5199\u80fd\u529b\u4e5f\u53ef\u7528\uff0c\u4f46\u8fd9\u4e9b\u63a5\u53e3\u6709\u4e00\u4e9b\u4e0d\u826f\u526f\u4f5c\u7528\uff0c\u56e0\u6b64\u8be5\u7279\u6027\u5728\u975e Linux \u5e73\u53f0\u4e0a\u9ed8\u8ba4\u7981\u7528\u3002 \u65b0\u914d\u7f6e\u53c2\u6570backend_flush_after\u3001bgwriter_flush_after\u3001checkpoint_flush_after\u548cwal_writer_flush_after\u63a7\u5236\u8fd9\u4e00\u884c\u4e3a\u3002", "title": "\u5728\u53ef\u884c\u4e4b\u5904\uff0c\u5728\u53ef\u914d\u7f6e\u6b21\u6570\u7684\u5199\u4e4b\u540e\u89e6\u53d1\u5185\u6838\u56de\u5199\uff0c\u4ee5\u9632\u6b62\u5185\u6838\u78c1\u76d8\u7f13\u51b2\u533a\u4e2d\u810f\u6570\u636e\u7684\u79ef\u7d2f", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "deb4ed9039a7c14ccc489a468957a514079e2d3264a816f1af7026e409f1fc02", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["428b1d6b2"], ["4bc0f165c"], ["72a98a639"], ["7975c5e0a"], ["8f91d87d4"], ["a71248708"], ["fa11a09fe"]], "identity_text": "Where feasible, trigger kernel writeback after a configurable number of writes, to prevent accumulation of dirty data in kernel disk buffers (Fabien Coelho, Andres Freund) PostgreSQL writes data to the kernel's disk cache, from where it will be flushed to physical storage in due time. Many operating systems are not smart about managing this and allow large amounts of dirty data to accumulate before deciding to flush it all at once, causing long delays for new I/O requests until the flushing finishes. This change attempts to alleviate this problem by explicitly requesting data flushes after a configurable interval. On Linux, sync_file_range() is used for this purpose, and the feature is on by default on Linux because that function has few downsides. This flushing capability is also available on other platforms if they have msync() or posix_fadvise(), but those interfaces have some undesirable side-effects so the feature is disabled by default on non-Linux platforms. The new configuration parameters guc-backend-flush-after , guc-bgwriter-flush-after , guc-checkpoint-flush-after , and guc-wal-writer-flush-after control this behavior.", "commit_aliases": ["428b1d6b2", "4bc0f165c", "72a98a639", "7975c5e0a", "8f91d87d4", "a71248708", "fa11a09fe"], "source_commits": ["428b1d6b2", "4bc0f165c", "72a98a639", "7975c5e0a", "8f91d87d4", "a71248708", "fa11a09fe"], "source_entry_id": "9.6.0/changes/027", "db_id": "7694688677b4bae3f35eca40cfdd36b8", "patch_ids": ["1f8b632f4794dd40089f690da7a39da9", "3e1fd2d585d4850c696d17cabe1dc1e5", "512ba841e5f89272c96aa467b614803f", "597e8ad77c91d7823cbb00fdb0bf9864", "7e45f40be5b000c96b39c21c7fe1cab1", "8d7cf2345f83d4d16ac7e515899f5a1d", "bd891e9e15b76822e9477d04ab0913ef"], "statement_hash": "9e8848333a27b7337b27a78c2def53c7d73667a3355a7e5126ee19817ae98256", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-c8c62edc91c0634d", "migration": false}, {"id": "9.6.0-14391c4723ffded5", "cves": [], "html": "<p>\u901a\u8fc7\u5728\u591a\u4e2a\u805a\u5408\u6709\u76f8\u540c\u53c2\u6570\u548c\u8f6c\u6362\u51fd\u6570\u65f6\u5171\u4eab\u8ba1\u7b97\u6765\u6539\u8fdb\u805a\u5408\u51fd\u6570\u6027\u80fd\uff08David Rowley\uff09</p>\n<p>\u4f8b\u5982 <code>SELECT AVG(x), VARIANCE(x) FROM tab</code> \u53ef\u4ee5\u5bf9\u4e24\u4e2a\u805a\u5408\u4f7f\u7528\u5355\u6b21\u9010\u884c\u8ba1\u7b97\u3002</p>", "text": "\u901a\u8fc7\u5728\u591a\u4e2a\u805a\u5408\u6709\u76f8\u540c\u53c2\u6570\u548c\u8f6c\u6362\u51fd\u6570\u65f6\u5171\u4eab\u8ba1\u7b97\u6765\u6539\u8fdb\u805a\u5408\u51fd\u6570\u6027\u80fd\uff08David Rowley\uff09 \u4f8b\u5982 SELECT AVG(x), VARIANCE(x) FROM tab \u53ef\u4ee5\u5bf9\u4e24\u4e2a\u805a\u5408\u4f7f\u7528\u5355\u6b21\u9010\u884c\u8ba1\u7b97\u3002", "title": "\u901a\u8fc7\u5728\u591a\u4e2a\u805a\u5408\u6709\u76f8\u540c\u53c2\u6570\u548c\u8f6c\u6362\u51fd\u6570\u65f6\u5171\u4eab\u8ba1\u7b97\u6765\u6539\u8fdb\u805a\u5408\u51fd\u6570\u6027\u80fd", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "982fef438f3f3469aa7c765d870ea5ea811d5b8f63cae1b78e1a1bbadacf101d", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["804163bc2"]], "identity_text": "Improve aggregate-function performance by sharing calculations across multiple aggregates if they have the same arguments and transition functions (David Rowley) For example, SELECT AVG(x), VARIANCE(x) FROM tab can use a single per-row computation for both aggregates.", "commit_aliases": ["804163bc2"], "source_commits": ["804163bc2"], "source_entry_id": "9.6.0/changes/028", "db_id": "622905e5480bb2cc8845c2cb036c0302", "patch_ids": ["61e6fee5fc97bc1fd8d21d86c39e33b0"], "statement_hash": "23c7475581a010fdd283125b372a2ec12b40bd5ef5df132181cb559de5c1f671", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-14391c4723ffded5", "migration": false}, {"id": "9.6.0-69954b466cb5ca88", "cves": [], "html": "<p>\u901a\u8fc7\u68c0\u67e5\u5f53\u524d\u4e8b\u52a1\u7684\u5feb\u7167\u800c\u975e <code>pg_clog</code> \u6765\u51b3\u5b9a\u6e90\u4e8b\u52a1\u662f\u5426\u5e94\u88ab\u89c6\u4e3a\u5df2\u63d0\u4ea4\uff0c\u52a0\u901f\u6700\u8fd1\u521b\u5efa\u5143\u7ec4\u7684\u53ef\u89c1\u6027\u6d4b\u8bd5\uff08Jeff Janes\u3001Tom Lane\uff09</p>", "text": "\u901a\u8fc7\u68c0\u67e5\u5f53\u524d\u4e8b\u52a1\u7684\u5feb\u7167\u800c\u975e pg_clog \u6765\u51b3\u5b9a\u6e90\u4e8b\u52a1\u662f\u5426\u5e94\u88ab\u89c6\u4e3a\u5df2\u63d0\u4ea4\uff0c\u52a0\u901f\u6700\u8fd1\u521b\u5efa\u5143\u7ec4\u7684\u53ef\u89c1\u6027\u6d4b\u8bd5\uff08Jeff Janes\u3001Tom Lane\uff09", "title": "\u901a\u8fc7\u68c0\u67e5\u5f53\u524d\u4e8b\u52a1\u7684\u5feb\u7167\u800c\u975e pg_clog \u6765\u51b3\u5b9a\u6e90\u4e8b\u52a1\u662f\u5426\u5e94\u88ab\u89c6\u4e3a\u5df2\u63d0\u4ea4\uff0c\u52a0\u901f\u6700\u8fd1\u521b\u5efa\u5143\u7ec4\u7684\u53ef\u89c1\u6027\u6d4b\u8bd5", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "b840d4b79ea3bfc85a26e71b2fdae65d009e3ac6125293347204e6fd581e8982", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["8a7d07018"]], "identity_text": "Speed up visibility tests for recently-created tuples by checking the current transaction's snapshot, not pg_clog, to decide if the source transaction should be considered committed (Jeff Janes, Tom Lane)", "commit_aliases": ["8a7d07018"], "source_commits": ["8a7d07018"], "source_entry_id": "9.6.0/changes/029", "db_id": "785765515a6bdbe21dc5344791a562d1", "patch_ids": ["8daf975da7eb03cae0c3a7dcafd3d34e"], "statement_hash": "8f74e749a57e119bb569628aba444580a14f837eb61bd502d881a17ffb51c5db", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-69954b466cb5ca88", "migration": false}, {"id": "9.6.0-451e9f831dd4936b", "cves": [], "html": "<p>\u5141\u8bb8\u6bd4\u4ee5\u524d\u66f4\u65e9\u8bbe\u7f6e\u5143\u7ec4\u63d0\u793a\u4f4d\uff08Andres Freund\uff09</p>", "text": "\u5141\u8bb8\u6bd4\u4ee5\u524d\u66f4\u65e9\u8bbe\u7f6e\u5143\u7ec4\u63d0\u793a\u4f4d\uff08Andres Freund\uff09", "title": "\u5141\u8bb8\u6bd4\u4ee5\u524d\u66f4\u65e9\u8bbe\u7f6e\u5143\u7ec4\u63d0\u793a\u4f4d", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "c0529d3d02905f405d60b9ccb061712998f1dbb642a424c9cedfa39134f392cb", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["db76b1efb"]], "identity_text": "Allow tuple hint bits to be set sooner than before (Andres Freund)", "commit_aliases": ["db76b1efb"], "source_commits": ["db76b1efb"], "source_entry_id": "9.6.0/changes/030", "db_id": "657478a5ceed6871c18e22ba4515719b", "patch_ids": ["0e457f7e922afbd510f5506fefc1b16d"], "statement_hash": "eaf35b1af181ea963be837c7397692a73e8d999617bd3a70fc257e3abbf633db", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-451e9f831dd4936b", "migration": false}, {"id": "9.6.0-5c7b81519deee11e", "cves": [], "html": "<p>\u6539\u8fdb\u77ed\u547d\u9884\u5907\u4e8b\u52a1\u7684\u6027\u80fd\uff08Stas Kelvich\u3001Simon Riggs\u3001Pavan Deolasee\uff09</p>\n<p>\u4e24\u9636\u6bb5\u63d0\u4ea4\u4fe1\u606f\u73b0\u5728\u53ea\u5728 <code>PREPARE TRANSACTION</code> \u671f\u95f4\u5199\u5165 <acronym>WAL</acronym>\uff0c\u5982\u679c\u7d27\u63a5\u7740\u63d0\u4ea4\uff0c\u5c06\u5728 <code>COMMIT PREPARED</code> \u671f\u95f4\u4ece <acronym>WAL</acronym> \u8bfb\u56de\u3002\u53ea\u6709\u5f53\u672a\u51b3\u4e8b\u52a1\u5728\u4e0b\u4e00\u6b21\u68c0\u67e5\u70b9\u4e4b\u524d\u6ca1\u6709\u88ab\u63d0\u4ea4\u6216\u4e2d\u6b62\u65f6\u624d\u521b\u5efa\u5355\u72ec\u7684\u72b6\u6001\u6587\u4ef6\u3002</p>", "text": "\u6539\u8fdb\u77ed\u547d\u9884\u5907\u4e8b\u52a1\u7684\u6027\u80fd\uff08Stas Kelvich\u3001Simon Riggs\u3001Pavan Deolasee\uff09 \u4e24\u9636\u6bb5\u63d0\u4ea4\u4fe1\u606f\u73b0\u5728\u53ea\u5728 PREPARE TRANSACTION \u671f\u95f4\u5199\u5165 WAL\uff0c\u5982\u679c\u7d27\u63a5\u7740\u63d0\u4ea4\uff0c\u5c06\u5728 COMMIT PREPARED \u671f\u95f4\u4ece WAL \u8bfb\u56de\u3002\u53ea\u6709\u5f53\u672a\u51b3\u4e8b\u52a1\u5728\u4e0b\u4e00\u6b21\u68c0\u67e5\u70b9\u4e4b\u524d\u6ca1\u6709\u88ab\u63d0\u4ea4\u6216\u4e2d\u6b62\u65f6\u624d\u521b\u5efa\u5355\u72ec\u7684\u72b6\u6001\u6587\u4ef6\u3002", "title": "\u6539\u8fdb\u77ed\u547d\u9884\u5907\u4e8b\u52a1\u7684\u6027\u80fd", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "615b10c06648c8a9695ec5a72370f471f77fec76c10276c8fc758a84e8fdbb7f", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["978b2f65a"], ["e0694cf9c"]], "identity_text": "Improve performance of short-lived prepared transactions (Stas Kelvich, Simon Riggs, Pavan Deolasee) Two-phase commit information is now written only to WAL during PREPARE TRANSACTION, and will be read back from WAL during COMMIT PREPARED if that happens soon thereafter. A separate state file is created only if the pending transaction does not get committed or aborted by the time of the next checkpoint.", "commit_aliases": ["978b2f65a", "e0694cf9c"], "source_commits": ["978b2f65a", "e0694cf9c"], "source_entry_id": "9.6.0/changes/031", "db_id": "9eb2bafbcd1d1bc873580c679e8d62f5", "patch_ids": ["5e98e7dcbc70c3363c5dfd1b4668a939", "97a72e27e26d8d63552c89c4fa22c717"], "statement_hash": "cea87338338d211589795868a3dbd7eaafdeef0a39d06e0adc001019d970c5c3", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-5c7b81519deee11e", "migration": false}, {"id": "9.6.0-3146a287fa6e495f", "cves": [], "html": "<p>\u6539\u8fdb\u5185\u5b58\u4e0a\u4e0b\u6587\u9500\u6bc1\u7684\u6027\u80fd\uff08Jan Wieck\uff09</p>", "text": "\u6539\u8fdb\u5185\u5b58\u4e0a\u4e0b\u6587\u9500\u6bc1\u7684\u6027\u80fd\uff08Jan Wieck\uff09", "title": "\u6539\u8fdb\u5185\u5b58\u4e0a\u4e0b\u6587\u9500\u6bc1\u7684\u6027\u80fd", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "ab8794635246954e847744c57df122c91f069accc0e27b93bb8ebcd2bb4c9fdb", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["25c539233"]], "identity_text": "Improve performance of memory context destruction (Jan Wieck)", "commit_aliases": ["25c539233"], "source_commits": ["25c539233"], "source_entry_id": "9.6.0/changes/032", "db_id": "f1941d7b48b85d5c2cb69ed8c1bfb601", "patch_ids": ["95c4bbde3cf3709dc7d986fb4c197589"], "statement_hash": "4028b9dbd5ac64cbdce57d4cba6e125aefb5361aa744f2d36f0df2d407ace4a7", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-3146a287fa6e495f", "migration": false}, {"id": "9.6.0-6030b30087940240", "cves": [], "html": "<p>\u6539\u8fdb\u6709\u591a\u4e2a\u88ab\u8ddf\u8e2a\u5bf9\u8c61\u7684\u8d44\u6e90\u6240\u6709\u8005\u7684\u6027\u80fd\uff08Aleksander Alekseev\uff09</p>", "text": "\u6539\u8fdb\u6709\u591a\u4e2a\u88ab\u8ddf\u8e2a\u5bf9\u8c61\u7684\u8d44\u6e90\u6240\u6709\u8005\u7684\u6027\u80fd\uff08Aleksander Alekseev\uff09", "title": "\u6539\u8fdb\u6709\u591a\u4e2a\u88ab\u8ddf\u8e2a\u5bf9\u8c61\u7684\u8d44\u6e90\u6240\u6709\u8005\u7684\u6027\u80fd", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "1f85e559b3139d231e72c20b6be5809448cdee8832ff902b4ac9040fa2794bef", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["cc988fbb0"]], "identity_text": "Improve performance of resource owners with many tracked objects (Aleksander Alekseev)", "commit_aliases": ["cc988fbb0"], "source_commits": ["cc988fbb0"], "source_entry_id": "9.6.0/changes/033", "db_id": "40df862c5d936ece169537aac10eca8b", "patch_ids": ["f93a6e9e28f1679f0d3ebeec46057398"], "statement_hash": "a16c9823c6f02032dfcc7ea7f72ef25bf296814756945371fb308fbebdd939e4", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-6030b30087940240", "migration": false}, {"id": "9.6.0-98c0c6ce0679d440", "cves": [], "html": "<p>\u52a0\u901f <code>timestamp</code>\u3001<code>time</code> \u548c <code>date</code> \u6570\u636e\u7c7b\u578b\u7684\u8f93\u51fa\u51fd\u6570\uff08David Rowley\u3001Andres Freund\uff09</p>", "text": "\u52a0\u901f timestamp\u3001time \u548c date \u6570\u636e\u7c7b\u578b\u7684\u8f93\u51fa\u51fd\u6570\uff08David Rowley\u3001Andres Freund\uff09", "title": "\u52a0\u901f timestamp\u3001time \u548c date \u6570\u636e\u7c7b\u578b\u7684\u8f93\u51fa\u51fd\u6570", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "74ad86bbc8bf773c44adfc195c8d040e7cfcd78bdb124ce86919acf38a8534d2", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["aa2387e2f"]], "identity_text": "Improve speed of the output functions for timestamp, time, and date data types (David Rowley, Andres Freund)", "commit_aliases": ["aa2387e2f"], "source_commits": ["aa2387e2f"], "source_entry_id": "9.6.0/changes/034", "db_id": "a3885ca2234bb50aca660e138de70b08", "patch_ids": ["9eae9d159a22bb8a12595324698e8005"], "statement_hash": "52dfd160358c7b9071ac754323f3ae5d788083ae51781f0363f2d74ab7b61cf1", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-98c0c6ce0679d440", "migration": false}, {"id": "9.6.0-e2636cc7d5b7a8a2", "cves": [], "html": "<p>\u907f\u514d\u91cd\u653e\u53d6\u5f97 <code>AccessExclusive</code> \u9501\u7684\u64cd\u4f5c\u671f\u95f4\u70ed\u5907\u67e5\u8be2\u7684\u4e00\u4e9b\u4e0d\u5fc5\u8981\u53d6\u6d88\uff08Jeff Janes\uff09</p>", "text": "\u907f\u514d\u91cd\u653e\u53d6\u5f97 AccessExclusive \u9501\u7684\u64cd\u4f5c\u671f\u95f4\u70ed\u5907\u67e5\u8be2\u7684\u4e00\u4e9b\u4e0d\u5fc5\u8981\u53d6\u6d88\uff08Jeff Janes\uff09", "title": "\u907f\u514d\u91cd\u653e\u53d6\u5f97 AccessExclusive \u9501\u7684\u64cd\u4f5c\u671f\u95f4\u70ed\u5907\u67e5\u8be2\u7684\u4e00\u4e9b\u4e0d\u5fc5\u8981\u53d6\u6d88", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "b9378c14889d8b38cf28013bb6d2d44297188d814e5562242878d02bf5f915be", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["37c54863c"]], "identity_text": "Avoid some unnecessary cancellations of hot-standby queries during replay of actions that take AccessExclusive locks (Jeff Janes)", "commit_aliases": ["37c54863c"], "source_commits": ["37c54863c"], "source_entry_id": "9.6.0/changes/035", "db_id": "2dd04f800ffcd41915e68d30d2de6002", "patch_ids": ["fb8c5bcb660d162450279061a72a30d7"], "statement_hash": "a6bfa3966753e2c66bf03c5c3457a0fb029d864138ada773e5682f5cae899cfb", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-e2636cc7d5b7a8a2", "migration": false}, {"id": "9.6.0-bd1f8d4d8de06de0", "cves": [], "html": "<p>\u5f53\u5173\u7cfb\u7684\u6269\u5c55\u9501\u6709\u4e89\u7528\u65f6\u4e00\u6b21\u6269\u5c55\u5173\u7cfb\u591a\u4e2a\u5757\uff08Dilip Kumar\uff09</p>\n<p>\u8fd9\u901a\u8fc7\u51cf\u5c11\u4e89\u7528\u6539\u8fdb\u53ef\u4f38\u7f29\u6027\u3002</p>", "text": "\u5f53\u5173\u7cfb\u7684\u6269\u5c55\u9501\u6709\u4e89\u7528\u65f6\u4e00\u6b21\u6269\u5c55\u5173\u7cfb\u591a\u4e2a\u5757\uff08Dilip Kumar\uff09 \u8fd9\u901a\u8fc7\u51cf\u5c11\u4e89\u7528\u6539\u8fdb\u53ef\u4f38\u7f29\u6027\u3002", "title": "\u5f53\u5173\u7cfb\u7684\u6269\u5c55\u9501\u6709\u4e89\u7528\u65f6\u4e00\u6b21\u6269\u5c55\u5173\u7cfb\u591a\u4e2a\u5757", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "47b93b8d5830a5a5d38ba774e21afadb53912b471aa009a961f52eceafdfa3d6", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["719c84c1b"]], "identity_text": "Extend relations multiple blocks at a time when there is contention for the relation's extension lock (Dilip Kumar) This improves scalability by decreasing contention.", "commit_aliases": ["719c84c1b"], "source_commits": ["719c84c1b"], "source_entry_id": "9.6.0/changes/036", "db_id": "70c53fef60c5bcd5f1866b2f8fd238f6", "patch_ids": ["7d4205961cab78e208ab81442d748aba"], "statement_hash": "91e6798371f96768e136cfd1bace64324361b087d715504ae0e46010032e2eb6", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-bd1f8d4d8de06de0", "migration": false}, {"id": "9.6.0-c8a3d3d659041d2d", "cves": [], "html": "<p>\u589e\u52a0 clog \u7f13\u51b2\u533a\u6570\u91cf\u4ee5\u83b7\u5f97\u66f4\u597d\u7684\u53ef\u4f38\u7f29\u6027\uff08Amit Kapila\u3001Andres Freund\uff09</p>", "text": "\u589e\u52a0 clog \u7f13\u51b2\u533a\u6570\u91cf\u4ee5\u83b7\u5f97\u66f4\u597d\u7684\u53ef\u4f38\u7f29\u6027\uff08Amit Kapila\u3001Andres Freund\uff09", "title": "\u589e\u52a0 clog \u7f13\u51b2\u533a\u6570\u91cf\u4ee5\u83b7\u5f97\u66f4\u597d\u7684\u53ef\u4f38\u7f29\u6027", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "8d025d5d255eb90f5bd5fbcce121874d6f87abfd095619b73e37e8976de28141", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["5364b357f"]], "identity_text": "Increase the number of clog buffers for better scalability (Amit Kapila, Andres Freund)", "commit_aliases": ["5364b357f"], "source_commits": ["5364b357f"], "source_entry_id": "9.6.0/changes/037", "db_id": "622ab56eb0f4562094613bdeac58db6d", "patch_ids": ["3cbfc100fe6e2b2a202c5e9221076058"], "statement_hash": "9e17db276a57a171646718681680b3eb843caea96d4f43eb5dc25cb5c1cb2436", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-c8a3d3d659041d2d", "migration": false}, {"id": "9.6.0-a77127b915825b5c", "cves": [], "html": "<p>\u901a\u8fc7\u59cb\u7ec8\u4fdd\u6301\u7b80\u5355\u53d8\u91cf\u7684 <code>ParamListInfo</code> \u6761\u76ee\u6709\u6548\uff0c\u52a0\u901f <span>PL/pgSQL</span> \u4e2d\u7684\u8868\u8fbe\u5f0f\u6c42\u503c\uff08Tom Lane\uff09</p>", "text": "\u901a\u8fc7\u59cb\u7ec8\u4fdd\u6301\u7b80\u5355\u53d8\u91cf\u7684 ParamListInfo \u6761\u76ee\u6709\u6548\uff0c\u52a0\u901f PL/pgSQL \u4e2d\u7684\u8868\u8fbe\u5f0f\u6c42\u503c\uff08Tom Lane\uff09", "title": "\u901a\u8fc7\u59cb\u7ec8\u4fdd\u6301\u7b80\u5355\u53d8\u91cf\u7684 ParamListInfo \u6761\u76ee\u6709\u6548\uff0c\u52a0\u901f PL/pgSQL \u4e2d\u7684\u8868\u8fbe\u5f0f\u6c42\u503c", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "ed678b6460e5d012b1b610ba5e527b3e50186e0dd40d2addc8e795f449ee95bd", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["6c82d8d1f"]], "identity_text": "Speed up expression evaluation in PL/pgSQL by keeping ParamListInfo entries for simple variables valid at all times (Tom Lane)", "commit_aliases": ["6c82d8d1f"], "source_commits": ["6c82d8d1f"], "source_entry_id": "9.6.0/changes/038", "db_id": "a6fb1d44e712fa4b96c9242f20ac9d05", "patch_ids": ["d2cc52fcbf9d15192a92d19fd796cbee"], "statement_hash": "b14cdd4ef0fae8085a169ec56531dfe74725375965258ec63f5201889dfdadf0", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-a77127b915825b5c", "migration": false}, {"id": "9.6.0-970380fb9f7b7b33", "cves": [], "html": "<p>\u907f\u514d\u5728\u6700\u8fd1\u7684 Windows \u7248\u672c\u4e0a\u628a <code>SO_SNDBUF</code> \u8bbe\u7f6e\u964d\u4f4e\u5230\u9ed8\u8ba4\u503c\u4ee5\u4e0b\uff08Chen Huajun\uff09</p>", "text": "\u907f\u514d\u5728\u6700\u8fd1\u7684 Windows \u7248\u672c\u4e0a\u628a SO_SNDBUF \u8bbe\u7f6e\u964d\u4f4e\u5230\u9ed8\u8ba4\u503c\u4ee5\u4e0b\uff08Chen Huajun\uff09", "title": "\u907f\u514d\u5728\u6700\u8fd1\u7684 Windows \u7248\u672c\u4e0a\u628a SO_SNDBUF \u8bbe\u7f6e\u964d\u4f4e\u5230\u9ed8\u8ba4\u503c\u4ee5\u4e0b", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "d456adf8021ab09794db1edfb364501de8174de833fd01e3af3e22fdcbedd0be", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["4f33621f3"]], "identity_text": "Avoid reducing the SO_SNDBUF setting below its default on recent Windows versions (Chen Huajun)", "commit_aliases": ["4f33621f3"], "source_commits": ["4f33621f3"], "source_entry_id": "9.6.0/changes/039", "db_id": "293c895bd304caa9c8edc77886455a87", "patch_ids": ["fc1c2e638fc4d8cc6528278549f47d79"], "statement_hash": "ec27ae76b72a0f6a93e56178d0e5d81a2bb0d799ff4e9dc423023706e7e00f10", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-970380fb9f7b7b33", "migration": false}, {"id": "9.6.0-7f80c7719712686c", "cves": [], "html": "<p>\u5728 Windows \u4e0a\u9ed8\u8ba4\u7981\u7528<a href=\"/docs/9.6/runtime-config-logging.html#GUC-UPDATE-PROCESS-TITLE\">update_process_title</a>\uff08Takayuki Tsunakawa\uff09</p>\n<p>\u66f4\u65b0\u8fdb\u7a0b\u6807\u9898\u7684\u5f00\u9500\u5728 Windows \u4e0a\u6bd4\u5927\u591a\u6570\u5176\u4ed6\u5e73\u53f0\u5927\u5f97\u591a\uff0c\u800c\u4e14\u7531\u4e8e\u5927\u591a\u6570 Windows \u7528\u6237\u6ca1\u6709\u80fd\u663e\u793a\u8fdb\u7a0b\u6807\u9898\u7684\u5de5\u5177\uff0c\u8fd9\u6837\u505a\u4e5f\u6ca1\u90a3\u4e48\u6709\u7528\u3002</p>", "text": "\u5728 Windows \u4e0a\u9ed8\u8ba4\u7981\u7528update_process_title\uff08Takayuki Tsunakawa\uff09 \u66f4\u65b0\u8fdb\u7a0b\u6807\u9898\u7684\u5f00\u9500\u5728 Windows \u4e0a\u6bd4\u5927\u591a\u6570\u5176\u4ed6\u5e73\u53f0\u5927\u5f97\u591a\uff0c\u800c\u4e14\u7531\u4e8e\u5927\u591a\u6570 Windows \u7528\u6237\u6ca1\u6709\u80fd\u663e\u793a\u8fdb\u7a0b\u6807\u9898\u7684\u5de5\u5177\uff0c\u8fd9\u6837\u505a\u4e5f\u6ca1\u90a3\u4e48\u6709\u7528\u3002", "title": "\u5728 Windows \u4e0a\u9ed8\u8ba4\u7981\u7528update_process_title", "commits": [], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.8", "source_hash": "fe0e6f83da4034470bcda699e30b432c77f1bb2e65139243c68e597b82d35133", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["9b33c7e80"]], "identity_text": "Disable guc-update-process-title by default on Windows (Takayuki Tsunakawa) The overhead of updating the process title is much larger on Windows than most other platforms, and it is also less useful to do it since most Windows users do not have tools that can display process titles.", "commit_aliases": ["9b33c7e80"], "source_commits": ["9b33c7e80"], "source_entry_id": "9.6.0/changes/040", "db_id": "df4f31b0f31dfa068e087ab943313b0f", "patch_ids": ["5e78daa5cdf6850599fe610a0cf7e752"], "statement_hash": "8756b4d1e7c3981d1a07f6b74ba6483c27af2dbf1d257302a41980950fa74623", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-7f80c7719712686c", "migration": false}, {"id": "9.6.0-a2cc768ca9c61a78", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/progress-reporting.html#PG-STAT-PROGRESS-VACUUM-VIEW\" title=\"\u8868\u00a028.20.\u00a0pg_stat_progress_vacuum \u89c6\u56fe\"><code>pg_stat_progress_vacuum</code></a> \u7cfb\u7edf\u89c6\u56fe\u4ee5\u4e3a <code>VACUUM</code> \u64cd\u4f5c\u63d0\u4f9b\u8fdb\u5ea6\u62a5\u544a\uff08Amit Langote\u3001Robert Haas\u3001Vinayak Pokale\u3001Rahila Syed\uff09</p>", "text": "\u6dfb\u52a0 pg_stat_progress_vacuum \u7cfb\u7edf\u89c6\u56fe\u4ee5\u4e3a VACUUM \u64cd\u4f5c\u63d0\u4f9b\u8fdb\u5ea6\u62a5\u544a\uff08Amit Langote\u3001Robert Haas\u3001Vinayak Pokale\u3001Rahila Syed\uff09", "title": "\u6dfb\u52a0 pg_stat_progress_vacuum \u7cfb\u7edf\u89c6\u56fe\u4ee5\u4e3a VACUUM \u64cd\u4f5c\u63d0\u4f9b\u8fdb\u5ea6\u62a5\u544a", "commits": [], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.9", "source_hash": "3a49d5d2a529ca71a3b52f4c189d77079be705ca368b2fc3a4ed28112218f48b", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["c16dc1aca"]], "identity_text": "Add pg_stat_progress_vacuum system view to provide progress reporting for VACUUM operations (Amit Langote, Robert Haas, Vinayak Pokale, Rahila Syed)", "commit_aliases": ["c16dc1aca"], "source_commits": ["c16dc1aca"], "source_entry_id": "9.6.0/changes/041", "db_id": "67271ee2575cdb9e666289644c2551a9", "patch_ids": ["3b4e6ccd1b40dfb36d2244e1887a4ed3"], "statement_hash": "5a1dcc5de3f0f50e7f41375132acb2ed10456478530ad3d38b5cd1917e7dd071", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-a2cc768ca9c61a78", "migration": false}, {"id": "9.6.0-613e3b20a4a8a0df", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/functions-info.html#FUNCTIONS-CONTROLDATA\" title=\"\u8868\u00a09.71.\u00a0\u63a7\u5236\u6570\u636e\u51fd\u6570\"><code>pg_control_system()</code></a>\u3001<code>pg_control_checkpoint()</code>\u3001<code>pg_control_recovery()</code> \u548c <code>pg_control_init()</code> \u51fd\u6570\u4ee5\u628a <code>pg_control</code> \u7684\u5b57\u6bb5\u66b4\u9732\u7ed9 <acronym>SQL</acronym>\uff08Joe Conway\u3001Michael Paquier\uff09</p>", "text": "\u6dfb\u52a0 pg_control_system()\u3001pg_control_checkpoint()\u3001pg_control_recovery() \u548c pg_control_init() \u51fd\u6570\u4ee5\u628a pg_control \u7684\u5b57\u6bb5\u66b4\u9732\u7ed9 SQL\uff08Joe Conway\u3001Michael Paquier\uff09", "title": "\u6dfb\u52a0 pg_control_system()\u3001pg_control_checkpoint()\u3001pg_control_recovery() \u548c pg_control_init() \u51fd\u6570\u4ee5\u628a pg_control \u7684\u5b57\u6bb5\u66b4\u9732\u7ed9 SQL", "commits": [], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.9", "source_hash": "1b2fbe4ae7c272c78ced3b4c49e0eb7c99612ce80bdacb150c5b509d0193bbfd", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["dc7d70ea0"]], "identity_text": "Add pg_control_system(), pg_control_checkpoint(), pg_control_recovery(), and pg_control_init() functions to expose fields of pg_control to SQL (Joe Conway, Michael Paquier)", "commit_aliases": ["dc7d70ea0"], "source_commits": ["dc7d70ea0"], "source_entry_id": "9.6.0/changes/042", "db_id": "02c1cbb66ea43d942090c1757ac13fcb", "patch_ids": ["94aa84a3f1b31d251919a28a0d5d89e9"], "statement_hash": "911b4d1698921e57202ac3e23b93f0067536d96d765a0d3d11704aac1cf8cd1b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-613e3b20a4a8a0df", "migration": false}, {"id": "9.6.0-1b7ed7a3317d5fc0", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/view-pg-config.html\" title=\"50.60.\u00a0pg_config\"><code>pg_config</code></a> \u7cfb\u7edf\u89c6\u56fe\uff08Joe Conway\uff09</p>\n<p>\u6b64\u89c6\u56fe\u66b4\u9732\u4e0e <span>pg_config</span> \u547d\u4ee4\u884c\u5b9e\u7528\u7a0b\u5e8f\u76f8\u540c\u7684\u4fe1\u606f\uff0c\u5373 <span>PostgreSQL</span> \u7684\u5404\u79cd\u7f16\u8bd1\u65f6\u914d\u7f6e\u4fe1\u606f\u3002</p>", "text": "\u6dfb\u52a0 pg_config \u7cfb\u7edf\u89c6\u56fe\uff08Joe Conway\uff09 \u6b64\u89c6\u56fe\u66b4\u9732\u4e0e pg_config \u547d\u4ee4\u884c\u5b9e\u7528\u7a0b\u5e8f\u76f8\u540c\u7684\u4fe1\u606f\uff0c\u5373 PostgreSQL \u7684\u5404\u79cd\u7f16\u8bd1\u65f6\u914d\u7f6e\u4fe1\u606f\u3002", "title": "\u6dfb\u52a0 pg_config \u7cfb\u7edf\u89c6\u56fe", "commits": [], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.9", "source_hash": "be937cdc335ed2a4177cf7a5b2a4edb9f4a28ce0de4092f8f0b6034b3655a3a1", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["a5c43b886"]], "identity_text": "Add pg_config system view (Joe Conway) This view exposes the same information available from the pg_config command-line utility, namely assorted compile-time configuration information for PostgreSQL.", "commit_aliases": ["a5c43b886"], "source_commits": ["a5c43b886"], "source_entry_id": "9.6.0/changes/043", "db_id": "ae9ab2be5919c79a1bb402c9a3fb26c4", "patch_ids": ["e91dae91629c4b58f8edb3f4755e7315"], "statement_hash": "a8581cae3f63f54d063192bd50d2c426a9966986bc113daed330d71b802b6491", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-1b7ed7a3317d5fc0", "migration": false}, {"id": "9.6.0-712980dee0651b45", "cves": [], "html": "<p>\u5728 <a href=\"/docs/9.6/view-pg-replication-slots.html\" title=\"50.71.\u00a0pg_replication_slots\"><code>pg_replication_slots</code></a> \u7cfb\u7edf\u89c6\u56fe\u4e2d\u6dfb\u52a0 <code>confirmed_flush_lsn</code> \u5217\uff08Marko Tiikkaja\uff09</p>", "text": "\u5728 pg_replication_slots \u7cfb\u7edf\u89c6\u56fe\u4e2d\u6dfb\u52a0 confirmed_flush_lsn \u5217\uff08Marko Tiikkaja\uff09", "title": "\u5728 pg_replication_slots \u7cfb\u7edf\u89c6\u56fe\u4e2d\u6dfb\u52a0 confirmed_flush_lsn \u5217", "commits": [], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.9", "source_hash": "849bfa41fd667f17dcb368747540d88feeff48550813eafbb731cb6bff0e7d5a", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["3f811c2d6"]], "identity_text": "Add a confirmed_flush_lsn column to the pg_replication_slots system view (Marko Tiikkaja)", "commit_aliases": ["3f811c2d6"], "source_commits": ["3f811c2d6"], "source_entry_id": "9.6.0/changes/044", "db_id": "aa53e3330a56bf231bac78df2b963010", "patch_ids": ["96f99dffb1613eb3959d5f596c29b14e"], "statement_hash": "51e90204fe72f40e132026e56611061b4ea4b4a89adcbb8f5593a7491dd7d580", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-712980dee0651b45", "migration": false}, {"id": "9.6.0-0605acee9c84b188", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/monitoring-stats.html#PG-STAT-WAL-RECEIVER-VIEW\" title=\"\u8868\u00a028.6.\u00a0pg_stat_wal_receiver \u89c6\u56fe\"><code>pg_stat_wal_receiver</code></a> \u7cfb\u7edf\u89c6\u56fe\u4ee5\u63d0\u4f9b\u70ed\u5907\u670d\u52a1\u5668 <acronym>WAL</acronym> \u63a5\u6536\u5668\u8fdb\u7a0b\u7684\u72b6\u6001\u4fe1\u606f\uff08Michael Paquier\uff09</p>", "text": "\u6dfb\u52a0 pg_stat_wal_receiver \u7cfb\u7edf\u89c6\u56fe\u4ee5\u63d0\u4f9b\u70ed\u5907\u670d\u52a1\u5668 WAL \u63a5\u6536\u5668\u8fdb\u7a0b\u7684\u72b6\u6001\u4fe1\u606f\uff08Michael Paquier\uff09", "title": "\u6dfb\u52a0 pg_stat_wal_receiver \u7cfb\u7edf\u89c6\u56fe\u4ee5\u63d0\u4f9b\u70ed\u5907\u670d\u52a1\u5668 WAL \u63a5\u6536\u5668\u8fdb\u7a0b\u7684\u72b6\u6001\u4fe1\u606f", "commits": [], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.9", "source_hash": "8c2fe822ceb7298a0ee78f14b1c063a011f2273d28ef9ee2d52c4f60a9485568", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["60d50769b"], ["9ed551e0a"], ["b1a9bad9e"]], "identity_text": "Add pg_stat_wal_receiver system view to provide information about the state of a hot-standby server's WAL receiver process (Michael Paquier)", "commit_aliases": ["60d50769b", "9ed551e0a", "b1a9bad9e"], "source_commits": ["60d50769b", "9ed551e0a", "b1a9bad9e"], "source_entry_id": "9.6.0/changes/045", "db_id": "45f1a2187481437d3b26a21ad3a1ffb8", "patch_ids": ["00baacbd249d3bb13ffc622143fb75a4", "41072e0c33c8156ec5ff38280fb88fc8", "f4b0ab0497d5a7fb3b8ca3c7241908e0"], "statement_hash": "54d8b1ee813c988c766f2223ae5c2247bfe7b06dfa6d78985c0c927a1b87cb5c", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-0605acee9c84b188", "migration": false}, {"id": "9.6.0-025d7caec831412f", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/functions-info.html#FUNCTIONS-INFO-SESSION-TABLE\" title=\"\u8868\u00a09.59.\u00a0\u4f1a\u8bdd\u4fe1\u606f\u51fd\u6570\"><code>pg_blocking_pids()</code></a> \u51fd\u6570\u4ee5\u53ef\u9760\u5730\u8bc6\u522b\u54ea\u4e9b\u4f1a\u8bdd\u963b\u585e\u54ea\u4e9b\u4f1a\u8bdd\uff08Tom Lane\uff09</p>\n<p>\u6b64\u51fd\u6570\u8fd4\u56de\u963b\u585e\u5177\u6709\u7ed9\u5b9a\u8fdb\u7a0b ID \u7684\u4f1a\u8bdd\u7684\u4efb\u4f55\u4f1a\u8bdd\u7684\u8fdb\u7a0b ID \u6570\u7ec4\u3002\u5386\u53f2\u4e0a\u7528\u6237\u901a\u8fc7\u5bf9 <code>pg_locks</code> \u89c6\u56fe\u81ea\u8fde\u63a5\u83b7\u5f97\u8fd9\u79cd\u4fe1\u606f\u3002\u4f46\u4ee5\u4efb\u4f55\u6b63\u786e\u6027\u8fd9\u6837\u505a\u90fd\u5f02\u5e38\u7e41\u7410\uff0c\u800c\u4e14\u5e76\u884c\u67e5\u8be2\u7684\u52a0\u5165\u4f7f\u65e7\u65b9\u6cd5\u5b8c\u5168\u4e0d\u5b9e\u7528\uff0c\u56e0\u4e3a\u9501\u53ef\u80fd\u88ab\u5b50\u5de5\u4f5c\u8005\u8fdb\u7a0b\u800c\u975e\u4f1a\u8bdd\u7684\u4e3b\u8fdb\u7a0b\u6301\u6709\u6216\u7b49\u5f85\u3002</p>", "text": "\u6dfb\u52a0 pg_blocking_pids() \u51fd\u6570\u4ee5\u53ef\u9760\u5730\u8bc6\u522b\u54ea\u4e9b\u4f1a\u8bdd\u963b\u585e\u54ea\u4e9b\u4f1a\u8bdd\uff08Tom Lane\uff09 \u6b64\u51fd\u6570\u8fd4\u56de\u963b\u585e\u5177\u6709\u7ed9\u5b9a\u8fdb\u7a0b ID \u7684\u4f1a\u8bdd\u7684\u4efb\u4f55\u4f1a\u8bdd\u7684\u8fdb\u7a0b ID \u6570\u7ec4\u3002\u5386\u53f2\u4e0a\u7528\u6237\u901a\u8fc7\u5bf9 pg_locks \u89c6\u56fe\u81ea\u8fde\u63a5\u83b7\u5f97\u8fd9\u79cd\u4fe1\u606f\u3002\u4f46\u4ee5\u4efb\u4f55\u6b63\u786e\u6027\u8fd9\u6837\u505a\u90fd\u5f02\u5e38\u7e41\u7410\uff0c\u800c\u4e14\u5e76\u884c\u67e5\u8be2\u7684\u52a0\u5165\u4f7f\u65e7\u65b9\u6cd5\u5b8c\u5168\u4e0d\u5b9e\u7528\uff0c\u56e0\u4e3a\u9501\u53ef\u80fd\u88ab\u5b50\u5de5\u4f5c\u8005\u8fdb\u7a0b\u800c\u975e\u4f1a\u8bdd\u7684\u4e3b\u8fdb\u7a0b\u6301\u6709\u6216\u7b49\u5f85\u3002", "title": "\u6dfb\u52a0 pg_blocking_pids() \u51fd\u6570\u4ee5\u53ef\u9760\u5730\u8bc6\u522b\u54ea\u4e9b\u4f1a\u8bdd\u963b\u585e\u54ea\u4e9b\u4f1a\u8bdd", "commits": [], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.9", "source_hash": "f345fe783133294c4c4059bc9a648e60c09ac6c19ce6f52fca649168bd8cc757", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["52f5d578d"]], "identity_text": "Add pg_blocking_pids() function to reliably identify which sessions block which others (Tom Lane) This function returns an array of the process IDs of any sessions that are blocking the session with the given process ID. Historically users have obtained such information using a self-join on the pg_locks view. However, it is unreasonably tedious to do it that way with any modicum of correctness, and the addition of parallel queries has made the old approach entirely impractical, since locks might be held or awaited by child worker processes rather than the session's main process.", "commit_aliases": ["52f5d578d"], "source_commits": ["52f5d578d"], "source_entry_id": "9.6.0/changes/046", "db_id": "11822242737768560b7e67adf8391ddb", "patch_ids": ["c27a18c7d30e32a5a27629c932e07d1a"], "statement_hash": "087747da95cddecebfb2bea80b90a2e7d54d73e3bc9aba645e45427b7b0c0943", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-025d7caec831412f", "migration": false}, {"id": "9.6.0-8c9ca76be1a00984", "cves": [], "html": "<p>\u6dfb\u52a0\u51fd\u6570 <a href=\"/docs/9.6/functions-admin.html#FUNCTIONS-ADMIN-BACKUP-TABLE\" title=\"\u8868\u00a09.78.\u00a0\u5907\u4efd\u63a7\u5236\u51fd\u6570\"><code>pg_current_xlog_flush_location()</code></a> \u4ee5\u66b4\u9732\u5f53\u524d\u4e8b\u52a1\u65e5\u5fd7\u5237\u5199\u4f4d\u7f6e\uff08Tomas Vondra\uff09</p>", "text": "\u6dfb\u52a0\u51fd\u6570 pg_current_xlog_flush_location() \u4ee5\u66b4\u9732\u5f53\u524d\u4e8b\u52a1\u65e5\u5fd7\u5237\u5199\u4f4d\u7f6e\uff08Tomas Vondra\uff09", "title": "\u6dfb\u52a0\u51fd\u6570 pg_current_xlog_flush_location() \u4ee5\u66b4\u9732\u5f53\u524d\u4e8b\u52a1\u65e5\u5fd7\u5237\u5199\u4f4d\u7f6e", "commits": [], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.9", "source_hash": "743f9274043be5205b1f36c518ab287c0286a87b7b19b49213bbfc1181c60006", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["e63bb4549"]], "identity_text": "Add function pg_current_xlog_flush_location() to expose the current transaction log flush location (Tomas Vondra)", "commit_aliases": ["e63bb4549"], "source_commits": ["e63bb4549"], "source_entry_id": "9.6.0/changes/047", "db_id": "2fb3146e29caa0ad757cbdd086534346", "patch_ids": ["0167d80b5f81fc4d76c1ab9098f66b24"], "statement_hash": "aff288767a25f126f0245cceeb9d3975605877431430c576faab221e91a160ac", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-8c9ca76be1a00984", "migration": false}, {"id": "9.6.0-d96c0d09bce47ddd", "cves": [], "html": "<p>\u6dfb\u52a0\u51fd\u6570 <a href=\"/docs/9.6/functions-info.html#FUNCTIONS-INFO-SESSION-TABLE\" title=\"\u8868\u00a09.59.\u00a0\u4f1a\u8bdd\u4fe1\u606f\u51fd\u6570\"><code>pg_notification_queue_usage()</code></a> \u4ee5\u62a5\u544a <code>NOTIFY</code> \u961f\u5217\u7684\u5360\u7528\u7a0b\u5ea6\uff08Brendan Jurd\uff09</p>", "text": "\u6dfb\u52a0\u51fd\u6570 pg_notification_queue_usage() \u4ee5\u62a5\u544a NOTIFY \u961f\u5217\u7684\u5360\u7528\u7a0b\u5ea6\uff08Brendan Jurd\uff09", "title": "\u6dfb\u52a0\u51fd\u6570 pg_notification_queue_usage() \u4ee5\u62a5\u544a NOTIFY \u961f\u5217\u7684\u5360\u7528\u7a0b\u5ea6", "commits": [], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.9", "source_hash": "37c0df11749459b9e33806d85327871f540e45ef0b9c5634fb621ecfab87d1b2", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["a04bb65f7"]], "identity_text": "Add function pg_notification_queue_usage() to report how full the NOTIFY queue is (Brendan Jurd)", "commit_aliases": ["a04bb65f7"], "source_commits": ["a04bb65f7"], "source_entry_id": "9.6.0/changes/048", "db_id": "a2f81c4d5a7ae0b7c1bfbe17f8145017", "patch_ids": ["283c40dc0cc7a4644b461d35292064a2"], "statement_hash": "64c8a5b703fa6ac3a195ca06870544c16b3019fd9331cdc02919cbab3739f24e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-d96c0d09bce47ddd", "migration": false}, {"id": "9.6.0-cb83394214c51765", "cves": [], "html": "<p>\u9650\u5236\u5185\u5b58\u4e0a\u4e0b\u6587\u7edf\u8ba1\u8f6c\u50a8\u7684\u5197\u957f\u7a0b\u5ea6\uff08Tom Lane\uff09</p>\n<p>\u5185\u5b58\u4e0d\u8db3\u5931\u8d25\u671f\u95f4\u8f93\u51fa\u5230 postmaster \u65e5\u5fd7\u7684\u5185\u5b58\u4f7f\u7528\u8f6c\u50a8\u73b0\u5728\u5728\u6709\u5927\u91cf\u5185\u5b58\u4e0a\u4e0b\u6587\u65f6\u6c47\u603b\u7edf\u8ba1\uff0c\u800c\u4e0d\u662f\u53ef\u80fd\u751f\u6210\u975e\u5e38\u5927\u7684\u62a5\u544a\u3002\u73b0\u5728\u8fd8\u6709<span>\u201c<span>\u603b\u8ba1</span>\u201d</span>\u6c47\u603b\u884c\u3002</p>", "text": "\u9650\u5236\u5185\u5b58\u4e0a\u4e0b\u6587\u7edf\u8ba1\u8f6c\u50a8\u7684\u5197\u957f\u7a0b\u5ea6\uff08Tom Lane\uff09 \u5185\u5b58\u4e0d\u8db3\u5931\u8d25\u671f\u95f4\u8f93\u51fa\u5230 postmaster \u65e5\u5fd7\u7684\u5185\u5b58\u4f7f\u7528\u8f6c\u50a8\u73b0\u5728\u5728\u6709\u5927\u91cf\u5185\u5b58\u4e0a\u4e0b\u6587\u65f6\u6c47\u603b\u7edf\u8ba1\uff0c\u800c\u4e0d\u662f\u53ef\u80fd\u751f\u6210\u975e\u5e38\u5927\u7684\u62a5\u544a\u3002\u73b0\u5728\u8fd8\u6709\u201c\u603b\u8ba1\u201d\u6c47\u603b\u884c\u3002", "title": "\u9650\u5236\u5185\u5b58\u4e0a\u4e0b\u6587\u7edf\u8ba1\u8f6c\u50a8\u7684\u5197\u957f\u7a0b\u5ea6", "commits": [], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.9", "source_hash": "a34a2a5df9243bb646d569a54a221ec626ba3dd6e8f11c14f33e6ce8612d3a77", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["7b5ef8f2d"]], "identity_text": "Limit the verbosity of memory context statistics dumps (Tom Lane) The memory usage dump that is output to the postmaster log during an out-of-memory failure now summarizes statistics when there are a large number of memory contexts, rather than possibly generating a very large report. There is also a grand total summary line now.", "commit_aliases": ["7b5ef8f2d"], "source_commits": ["7b5ef8f2d"], "source_entry_id": "9.6.0/changes/049", "db_id": "7617eb2e2119b274e272c3f2ad78de6b", "patch_ids": ["6dd0bb90886b50988771ccc207c60295"], "statement_hash": "792267748a147d83a372e22063051cd9ce72766120ce1dcd7b5333a2bff17afa", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-cb83394214c51765", "migration": false}, {"id": "9.6.0-b0310bb72db0b186", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/auth-methods.html#AUTH-BSD\" title=\"20.3.11.\u00a0BSD \u8ba4\u8bc1\"><acronym>BSD</acronym> \u8ba4\u8bc1\u65b9\u6cd5</a>\u4ee5\u5141\u8bb8 <span>PostgreSQL</span> \u5ba2\u6237\u7aef\u8ba4\u8bc1\u4f7f\u7528 <span>BSD</span> \u8ba4\u8bc1\u670d\u52a1\uff08Marisa Emerson\uff09</p>\n<p>BSD \u8ba4\u8bc1\u5f53\u524d\u53ea\u5728 <span>OpenBSD</span> \u4e0a\u53ef\u7528\u3002</p>", "text": "\u6dfb\u52a0 BSD \u8ba4\u8bc1\u65b9\u6cd5\u4ee5\u5141\u8bb8 PostgreSQL \u5ba2\u6237\u7aef\u8ba4\u8bc1\u4f7f\u7528 BSD \u8ba4\u8bc1\u670d\u52a1\uff08Marisa Emerson\uff09 BSD \u8ba4\u8bc1\u5f53\u524d\u53ea\u5728 OpenBSD \u4e0a\u53ef\u7528\u3002", "title": "\u6dfb\u52a0 BSD \u8ba4\u8bc1\u65b9\u6cd5\u4ee5\u5141\u8bb8 PostgreSQL \u5ba2\u6237\u7aef\u8ba4\u8bc1\u4f7f\u7528 BSD \u8ba4\u8bc1\u670d\u52a1", "commits": [], "section": "\u670d\u52a1\u5668 / Authentication", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.10", "source_hash": "a55737d23f802ccd55f0b93c9879a93f877af3a9235af70ae29e6e1fc40fc8b2", "section_path": ["\u670d\u52a1\u5668", "Authentication"], "commit_groups": [["34c33a1f0"]], "identity_text": "Add a BSD authentication method to allow use of the BSD Authentication service for PostgreSQL client authentication (Marisa Emerson) BSD Authentication is currently only available on OpenBSD.", "commit_aliases": ["34c33a1f0"], "source_commits": ["34c33a1f0"], "source_entry_id": "9.6.0/changes/050", "db_id": "0b63007f97b286461dcc426e12f03a67", "patch_ids": ["26fb8d192042169f98784be7d5301d83"], "statement_hash": "23a7feba4ecfaefb9791cfab1ffdedb9e2b40869e9780d5e91b036c0207e963c", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-b0310bb72db0b186", "migration": false}, {"id": "9.6.0-edc5026a44a7fce5", "cves": [], "html": "<p>\u4f7f\u7528 <a href=\"/docs/9.6/auth-methods.html#AUTH-PAM\" title=\"20.3.10.\u00a0PAM \u8ba4\u8bc1\"><acronym>PAM</acronym> \u8ba4\u8bc1</a>\u65f6\uff0c\u901a\u8fc7 <code>PAM_RHOST</code> \u9879\u5411 <acronym>PAM</acronym> \u6a21\u5757\u63d0\u4f9b\u5ba2\u6237\u7aef IP \u5730\u5740\u6216\u4e3b\u673a\u540d\uff08Grzegorz Sampolski\uff09</p>", "text": "\u4f7f\u7528 PAM \u8ba4\u8bc1\u65f6\uff0c\u901a\u8fc7 PAM_RHOST \u9879\u5411 PAM \u6a21\u5757\u63d0\u4f9b\u5ba2\u6237\u7aef IP \u5730\u5740\u6216\u4e3b\u673a\u540d\uff08Grzegorz Sampolski\uff09", "title": "\u4f7f\u7528 PAM \u8ba4\u8bc1\u65f6\uff0c\u901a\u8fc7 PAM_RHOST \u9879\u5411 PAM \u6a21\u5757\u63d0\u4f9b\u5ba2\u6237\u7aef IP \u5730\u5740\u6216\u4e3b\u673a\u540d", "commits": [], "section": "\u670d\u52a1\u5668 / Authentication", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.10", "source_hash": "3d7349b329f60ec5cd465a8a353fb43a14136d50f67bd82226de752402d03fd3", "section_path": ["\u670d\u52a1\u5668", "Authentication"], "commit_groups": [["2f1d2b7a7"]], "identity_text": "When using PAM authentication, provide the client IP address or host name to PAM modules via the PAM_RHOST item (Grzegorz Sampolski)", "commit_aliases": ["2f1d2b7a7"], "source_commits": ["2f1d2b7a7"], "source_entry_id": "9.6.0/changes/051", "db_id": "4c31b48873626d64b8278ad9dff418f6", "patch_ids": ["f74b2332dbb33ebe7bf105c9e5608dea"], "statement_hash": "f5cf87102ec1efecc4cc618216bb88d0a5a96af73349a36ae73369ae39aa7059", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-edc5026a44a7fce5", "migration": false}, {"id": "9.6.0-7130b269cf83a53f", "cves": [], "html": "<p>\u5728 postmaster \u65e5\u5fd7\u4e2d\u4e3a\u66f4\u591a\u7c7b\u578b\u7684\u5bc6\u7801\u8ba4\u8bc1\u5931\u8d25\u63d0\u4f9b\u7ec6\u8282\uff08Tom Lane\uff09</p>\n<p>\u6240\u6709\u901a\u5e38\u53ef\u8fbe\u7684\u5bc6\u7801\u8ba4\u8bc1\u5931\u8d25\u60c5\u51b5\u73b0\u5728\u90fd\u5e94\u5728\u65e5\u5fd7\u4e2d\u63d0\u4f9b\u5177\u4f53\u7684 <code>DETAIL</code> \u5b57\u6bb5\u3002</p>", "text": "\u5728 postmaster \u65e5\u5fd7\u4e2d\u4e3a\u66f4\u591a\u7c7b\u578b\u7684\u5bc6\u7801\u8ba4\u8bc1\u5931\u8d25\u63d0\u4f9b\u7ec6\u8282\uff08Tom Lane\uff09 \u6240\u6709\u901a\u5e38\u53ef\u8fbe\u7684\u5bc6\u7801\u8ba4\u8bc1\u5931\u8d25\u60c5\u51b5\u73b0\u5728\u90fd\u5e94\u5728\u65e5\u5fd7\u4e2d\u63d0\u4f9b\u5177\u4f53\u7684 DETAIL \u5b57\u6bb5\u3002", "title": "\u5728 postmaster \u65e5\u5fd7\u4e2d\u4e3a\u66f4\u591a\u7c7b\u578b\u7684\u5bc6\u7801\u8ba4\u8bc1\u5931\u8d25\u63d0\u4f9b\u7ec6\u8282", "commits": [], "section": "\u670d\u52a1\u5668 / Authentication", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.10", "source_hash": "15cad581ede8c7ceb893c7cbb1cf58c1fc1ae3746583e649209c5ef776ee6f70", "section_path": ["\u670d\u52a1\u5668", "Authentication"], "commit_groups": [["5e0b5dcab"]], "identity_text": "Provide detail in the postmaster log for more types of password authentication failure (Tom Lane) All ordinarily-reachable password authentication failure cases should now provide specific DETAIL fields in the log.", "commit_aliases": ["5e0b5dcab"], "source_commits": ["5e0b5dcab"], "source_entry_id": "9.6.0/changes/052", "db_id": "a94c8434754b00c8735fd6df2a6c073b", "patch_ids": ["59fcf024a1964fc5074baf7d8893ddd7"], "statement_hash": "2b42066f72d8e17bcc0a4b43fd99753d9f2216d1527214b1da924b7d9c8fb11f", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-7130b269cf83a53f", "migration": false}, {"id": "9.6.0-79a8c019e9a47ebf", "cves": [], "html": "<p>\u652f\u6301\u957f\u8fbe 128 \u4e2a\u5b57\u7b26\u7684 <a href=\"/docs/9.6/auth-methods.html#AUTH-RADIUS\" title=\"20.3.8.\u00a0RADIUS \u8ba4\u8bc1\"><acronym>RADIUS</acronym> \u5bc6\u7801</a>\uff08Marko Tiikkaja\uff09</p>", "text": "\u652f\u6301\u957f\u8fbe 128 \u4e2a\u5b57\u7b26\u7684 RADIUS \u5bc6\u7801\uff08Marko Tiikkaja\uff09", "title": "\u652f\u6301\u957f\u8fbe 128 \u4e2a\u5b57\u7b26\u7684 RADIUS \u5bc6\u7801", "commits": [], "section": "\u670d\u52a1\u5668 / Authentication", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.10", "source_hash": "4be0aef0b5ac3ac9f7e41a9cec89514b4d0d6775bdc359dc85061cca2ce4b325", "section_path": ["\u670d\u52a1\u5668", "Authentication"], "commit_groups": [["643beffe8"]], "identity_text": "Support RADIUS passwords up to 128 characters long (Marko Tiikkaja)", "commit_aliases": ["643beffe8"], "source_commits": ["643beffe8"], "source_entry_id": "9.6.0/changes/053", "db_id": "3ef06562fedfc6508c88a604b8304071", "patch_ids": ["88e6c866389b86e81484a4af9d6576e6"], "statement_hash": "9569e14bf538a603af49df26d7f72185c85189dd440efc9ad404a245dc7dafbe", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-79a8c019e9a47ebf", "migration": false}, {"id": "9.6.0-f6bec8c43921d25e", "cves": [], "html": "<p>\u6dfb\u52a0\u65b0\u7684 <a href=\"/docs/9.6/auth-methods.html#SSPI-AUTH\" title=\"20.3.4.\u00a0SSPI \u8ba4\u8bc1\"><acronym>SSPI</acronym> \u8ba4\u8bc1</a>\u53c2\u6570 <code>compat_realm</code> \u548c <code>upn_username</code>\uff0c\u63a7\u5236 <acronym>SSPI</acronym> \u8ba4\u8bc1\u671f\u95f4\u4f7f\u7528 <span>NetBIOS</span> \u8fd8\u662f <span>Kerberos</span> \u9886\u57df\u540d\u548c\u7528\u6237\u540d\uff08Christian Ullrich\uff09</p>", "text": "\u6dfb\u52a0\u65b0\u7684 SSPI \u8ba4\u8bc1\u53c2\u6570 compat_realm \u548c upn_username\uff0c\u63a7\u5236 SSPI \u8ba4\u8bc1\u671f\u95f4\u4f7f\u7528 NetBIOS \u8fd8\u662f Kerberos \u9886\u57df\u540d\u548c\u7528\u6237\u540d\uff08Christian Ullrich\uff09", "title": "\u6dfb\u52a0\u65b0\u7684 SSPI \u8ba4\u8bc1\u53c2\u6570 compat_realm \u548c upn_username\uff0c\u63a7\u5236 SSPI \u8ba4\u8bc1\u671f\u95f4\u4f7f\u7528 NetBIOS \u8fd8\u662f Kerberos \u9886\u57df\u540d\u548c\u7528\u6237\u540d", "commits": [], "section": "\u670d\u52a1\u5668 / Authentication", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.10", "source_hash": "9714d901eb7326b6004f58c87c0a5cf0fed08e4a5881ca3653d13d4188763863", "section_path": ["\u670d\u52a1\u5668", "Authentication"], "commit_groups": [["35e2e357c"]], "identity_text": "Add new SSPI authentication parameters compat_realm and upn_username to control whether NetBIOS or Kerberos realm names and user names are used during SSPI authentication (Christian Ullrich)", "commit_aliases": ["35e2e357c"], "source_commits": ["35e2e357c"], "source_entry_id": "9.6.0/changes/054", "db_id": "4a80bb85137ec1de82254013adf0d7b8", "patch_ids": ["c90e05046954cd62911d3ee69374fad7"], "statement_hash": "60ec223d8836f4fc354b8873defe9eca16bd4068d511eec7375b5cd04ecac234", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-f6bec8c43921d25e", "migration": false}, {"id": "9.6.0-bd2e2ccb2423a720", "cves": [], "html": "<p>\u5141\u8bb8\u5904\u4e8e\u7a7a\u95f2\u4e8e\u4e8b\u52a1\u72b6\u6001\u8fc7\u4e45\u7684\u4f1a\u8bdd\u88ab\u81ea\u52a8\u7ec8\u6b62\uff08Vik Fearing\uff09</p>\n<p>\u8fd9\u4e00\u884c\u4e3a\u7531\u65b0\u914d\u7f6e\u53c2\u6570<a href=\"/docs/9.6/runtime-config-client.html#GUC-IDLE-IN-TRANSACTION-SESSION-TIMEOUT\">idle_in_transaction_session_timeout</a>\u63a7\u5236\u3002\u5b83\u6709\u52a9\u4e8e\u9632\u6b62\u88ab\u9057\u5fd8\u7684\u4e8b\u52a1\u8fc7\u4e45\u6301\u6709\u9501\u6216\u59a8\u788d\u6e05\u7406\u3002</p>", "text": "\u5141\u8bb8\u5904\u4e8e\u7a7a\u95f2\u4e8e\u4e8b\u52a1\u72b6\u6001\u8fc7\u4e45\u7684\u4f1a\u8bdd\u88ab\u81ea\u52a8\u7ec8\u6b62\uff08Vik Fearing\uff09 \u8fd9\u4e00\u884c\u4e3a\u7531\u65b0\u914d\u7f6e\u53c2\u6570idle_in_transaction_session_timeout\u63a7\u5236\u3002\u5b83\u6709\u52a9\u4e8e\u9632\u6b62\u88ab\u9057\u5fd8\u7684\u4e8b\u52a1\u8fc7\u4e45\u6301\u6709\u9501\u6216\u59a8\u788d\u6e05\u7406\u3002", "title": "\u5141\u8bb8\u5904\u4e8e\u7a7a\u95f2\u4e8e\u4e8b\u52a1\u72b6\u6001\u8fc7\u4e45\u7684\u4f1a\u8bdd\u88ab\u81ea\u52a8\u7ec8\u6b62", "commits": [], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.11", "source_hash": "3a154257c8b4294f70351da1999543a83b635537f5ff33bdb3591bc9a0aaa08f", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["c6dda1f48"]], "identity_text": "Allow sessions to be terminated automatically if they are in idle-in-transaction state for too long (Vik Fearing) This behavior is controlled by the new configuration parameter guc-idle-in-transaction-session-timeout . It can be useful to prevent forgotten transactions from holding locks or preventing vacuum cleanup for too long.", "commit_aliases": ["c6dda1f48"], "source_commits": ["c6dda1f48"], "source_entry_id": "9.6.0/changes/055", "db_id": "44c7933813084b12f61449a19ee3d56a", "patch_ids": ["b9b20290f4c152cdc503b59c243cda27"], "statement_hash": "e6ac16b2519338f49250b6e3e9daac17a3a0a52a88132e16204a859dfeecb793", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-bd2e2ccb2423a720", "migration": false}, {"id": "9.6.0-e9afdcfdb9a67fdd", "cves": [], "html": "<p>\u628a<a href=\"/docs/9.6/runtime-config-wal.html#GUC-CHECKPOINT-TIMEOUT\">checkpoint_timeout</a>\u5141\u8bb8\u7684\u6700\u5927\u503c\u63d0\u9ad8\u5230 24 \u5c0f\u65f6\uff08Simon Riggs\uff09</p>", "text": "\u628acheckpoint_timeout\u5141\u8bb8\u7684\u6700\u5927\u503c\u63d0\u9ad8\u5230 24 \u5c0f\u65f6\uff08Simon Riggs\uff09", "title": "\u628acheckpoint_timeout\u5141\u8bb8\u7684\u6700\u5927\u503c\u63d0\u9ad8\u5230 24 \u5c0f\u65f6", "commits": [], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.11", "source_hash": "a33622b17d7238824457b91d528933dda7aa61ef7ca51387bf02735579907dbc", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["f2dba881a"]], "identity_text": "Raise the maximum allowed value of guc-checkpoint-timeout to 24 hours (Simon Riggs)", "commit_aliases": ["f2dba881a"], "source_commits": ["f2dba881a"], "source_entry_id": "9.6.0/changes/056", "db_id": "799c2f01e14ddbce17aa12a695c9525b", "patch_ids": ["d783fc32a66aa04b4e63797add01e871"], "statement_hash": "da45674d703eee67fcf721cee6a7c261487b16dbfcbf3c87b49d2da491d0154d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-e9afdcfdb9a67fdd", "migration": false}, {"id": "9.6.0-2c0b019c9772b588", "cves": [], "html": "<p>\u5141\u8bb8 <code>effective_io_concurrency</code> \u6309\u8868\u7a7a\u95f4\u8bbe\u7f6e\uff0c\u4ee5\u652f\u6301\u4e0d\u540c\u8868\u7a7a\u95f4\u6709\u4e0d\u540c I/O \u7279\u6027\u7684\u60c5\u51b5\uff08Julien Rouhaud\uff09</p>", "text": "\u5141\u8bb8 effective_io_concurrency \u6309\u8868\u7a7a\u95f4\u8bbe\u7f6e\uff0c\u4ee5\u652f\u6301\u4e0d\u540c\u8868\u7a7a\u95f4\u6709\u4e0d\u540c I/O \u7279\u6027\u7684\u60c5\u51b5\uff08Julien Rouhaud\uff09", "title": "\u5141\u8bb8 effective_io_concurrency \u6309\u8868\u7a7a\u95f4\u8bbe\u7f6e\uff0c\u4ee5\u652f\u6301\u4e0d\u540c\u8868\u7a7a\u95f4\u6709\u4e0d\u540c I/O \u7279\u6027\u7684\u60c5\u51b5", "commits": [], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.11", "source_hash": "3d89dfa470725065064c8335a2976bfe9308b0b0a7fffa16182ecfcc22e07769", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["1aba62ec6"]], "identity_text": "Allow effective_io_concurrency to be set per-tablespace to support cases where different tablespaces have different I/O characteristics (Julien Rouhaud)", "commit_aliases": ["1aba62ec6"], "source_commits": ["1aba62ec6"], "source_entry_id": "9.6.0/changes/057", "db_id": "2a3002dfe793853c104a7073ec5a892f", "patch_ids": ["030f7844d46b8b83527f827061a95477"], "statement_hash": "176ac7b6be58ce7c60629af1b6c41ba33f30f8db8c2dc90d35a9129806ef5ba1", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-2c0b019c9772b588", "migration": false}, {"id": "9.6.0-a858b008f2e24ab1", "cves": [], "html": "<p>\u6dfb\u52a0<a href=\"/docs/9.6/runtime-config-logging.html#GUC-LOG-LINE-PREFIX\">log_line_prefix</a>\u9009\u9879 <code>%n</code> \u4ee5 Unix \u7eaa\u5143\u5f62\u5f0f\uff08\u5e26\u6beb\u79d2\uff09\u6253\u5370\u5f53\u524d\u65f6\u95f4\uff08Tomas Vondra\u3001Jeff Davis\uff09</p>", "text": "\u6dfb\u52a0log_line_prefix\u9009\u9879 %n \u4ee5 Unix \u7eaa\u5143\u5f62\u5f0f\uff08\u5e26\u6beb\u79d2\uff09\u6253\u5370\u5f53\u524d\u65f6\u95f4\uff08Tomas Vondra\u3001Jeff Davis\uff09", "title": "\u6dfb\u52a0log_line_prefix\u9009\u9879 %n \u4ee5 Unix \u7eaa\u5143\u5f62\u5f0f\uff08\u5e26\u6beb\u79d2\uff09\u6253\u5370\u5f53\u524d\u65f6\u95f4", "commits": [], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.11", "source_hash": "ee942d464d4747920098e0abd2fe0d03590e26bac37d5cab9a9658fa1b2f1b9b", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["b1e1862a1"], ["f828654e1"]], "identity_text": "Add guc-log-line-prefix option %n to print the current time in Unix epoch form, with milliseconds (Tomas Vondra, Jeff Davis)", "commit_aliases": ["b1e1862a1", "f828654e1"], "source_commits": ["b1e1862a1", "f828654e1"], "source_entry_id": "9.6.0/changes/058", "db_id": "7a744cc72d85b7c8fa720bb2d9fda2ce", "patch_ids": ["1ddea7dd8d6cf63e27eeaeda9f668044", "57863f69591424fdb9f5dd6d77fd064b"], "statement_hash": "85d81366ac3a601bc7f7505fac632766029b5c79b4c65e443ec62f01aeedf0bf", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-a858b008f2e24ab1", "migration": false}, {"id": "9.6.0-4a763d2ab9e9b1fb", "cves": [], "html": "<p>\u6dfb\u52a0<a href=\"/docs/9.6/runtime-config-logging.html#GUC-SYSLOG-SEQUENCE-NUMBERS\">syslog_sequence_numbers</a>\u548c<a href=\"/docs/9.6/runtime-config-logging.html#GUC-SYSLOG-SPLIT-MESSAGES\">syslog_split_messages</a>\u914d\u7f6e\u53c2\u6570\uff0c\u4e3a\u8bb0\u5f55\u5230 <span>syslog</span> \u65f6\u7684\u6d88\u606f\u683c\u5f0f\u63d0\u4f9b\u66f4\u591a\u63a7\u5236\uff08Peter Eisentraut\uff09</p>", "text": "\u6dfb\u52a0syslog_sequence_numbers\u548csyslog_split_messages\u914d\u7f6e\u53c2\u6570\uff0c\u4e3a\u8bb0\u5f55\u5230 syslog \u65f6\u7684\u6d88\u606f\u683c\u5f0f\u63d0\u4f9b\u66f4\u591a\u63a7\u5236\uff08Peter Eisentraut\uff09", "title": "\u6dfb\u52a0syslog_sequence_numbers\u548csyslog_split_messages\u914d\u7f6e\u53c2\u6570\uff0c\u4e3a\u8bb0\u5f55\u5230 syslog \u65f6\u7684\u6d88\u606f\u683c\u5f0f\u63d0\u4f9b\u66f4\u591a\u63a7\u5236", "commits": [], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.11", "source_hash": "882f824d831b467c67fb45ad973dee6e709998a18f35689372d200a9b7aac752", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["f4c454e9b"], ["fc201dfd9"]], "identity_text": "Add guc-syslog-sequence-numbers and guc-syslog-split-messages configuration parameters to provide more control over the message format when logging to syslog (Peter Eisentraut)", "commit_aliases": ["f4c454e9b", "fc201dfd9"], "source_commits": ["f4c454e9b", "fc201dfd9"], "source_entry_id": "9.6.0/changes/059", "db_id": "d9f3e4aa945b7ea6f89c0a3c9c4894b3", "patch_ids": ["7ecfee74cc26744b6340b9eb347a10ca", "ea69b6530224f929c4e0489d825d0b1c"], "statement_hash": "3844b4d6da4cd0b689dd7d411904b1802d7d29dc6ece4cbc5339eb8c8b649dfb", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-4a763d2ab9e9b1fb", "migration": false}, {"id": "9.6.0-5025975f49083a5a", "cves": [], "html": "<p>\u628a<a href=\"/docs/9.6/runtime-config-wal.html#GUC-WAL-LEVEL\">wal_level</a>\u914d\u7f6e\u53c2\u6570\u7684 <code>archive</code> \u548c <code>hot_standby</code> \u503c\u5408\u5e76\u4e3a\u5355\u4e00\u65b0\u503c <code>replica</code>\uff08Peter Eisentraut\uff09</p>\n<p>\u533a\u5206\u8fd9\u4e9b\u8bbe\u7f6e\u4e0d\u518d\u6709\u7528\uff0c\u5408\u5e76\u5b83\u4eec\u662f\u671d\u8ba1\u5212\u4e2d\u7684\u672a\u6765\u590d\u5236\u8bbe\u7f6e\u7b80\u5316\u8fc8\u51fa\u7684\u4e00\u6b65\u3002\u65e7\u540d\u5b57\u4ecd\u88ab\u63a5\u53d7\u4f46\u5728\u5185\u90e8\u8f6c\u6362\u4e3a <code>replica</code>\u3002</p>", "text": "\u628awal_level\u914d\u7f6e\u53c2\u6570\u7684 archive \u548c hot_standby \u503c\u5408\u5e76\u4e3a\u5355\u4e00\u65b0\u503c replica\uff08Peter Eisentraut\uff09 \u533a\u5206\u8fd9\u4e9b\u8bbe\u7f6e\u4e0d\u518d\u6709\u7528\uff0c\u5408\u5e76\u5b83\u4eec\u662f\u671d\u8ba1\u5212\u4e2d\u7684\u672a\u6765\u590d\u5236\u8bbe\u7f6e\u7b80\u5316\u8fc8\u51fa\u7684\u4e00\u6b65\u3002\u65e7\u540d\u5b57\u4ecd\u88ab\u63a5\u53d7\u4f46\u5728\u5185\u90e8\u8f6c\u6362\u4e3a replica\u3002", "title": "\u628awal_level\u914d\u7f6e\u53c2\u6570\u7684 archive \u548c hot_standby \u503c\u5408\u5e76\u4e3a\u5355\u4e00\u65b0\u503c replica", "commits": [], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.11", "source_hash": "8d4cbd128c4482f8ae90bd162f238d5cd6a9518235dc037afc2271765fdc73e1", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["b555ed810"]], "identity_text": "Merge the archive and hot_standby values of the guc-wal-level configuration parameter into a single new value replica (Peter Eisentraut) Making a distinction between these settings is no longer useful, and merging them is a step towards a planned future simplification of replication setup. The old names are still accepted but are converted to replica internally.", "commit_aliases": ["b555ed810"], "source_commits": ["b555ed810"], "source_entry_id": "9.6.0/changes/060", "db_id": "88c0398481386a5325f619bf6c749d80", "patch_ids": ["32baf1e20424893caa44d3225843da1a"], "statement_hash": "3f949c15924983eb2725ca62199a241b7e3cd0f36f7e2c1505309ccd3e89aedd", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-5025975f49083a5a", "migration": false}, {"id": "9.6.0-5ff2263d98c8d9f0", "cves": [], "html": "<p>\u6dfb\u52a0 configure \u9009\u9879 <code>--with-systemd</code> \u4ee5\u5728\u670d\u52a1\u5668\u542f\u52a8\u548c\u505c\u6b62\u65f6\u542f\u7528\u8c03\u7528 <code>sd_notify()</code>\uff08Peter Eisentraut\uff09</p>\n<p>\u8fd9\u5141\u8bb8\u4f7f\u7528 <code>notify</code> \u7c7b\u578b\u7684 <span>systemd</span> \u670d\u52a1\u5355\u5143\uff0c\u5927\u5927\u7b80\u5316\u4e86 <span>PostgreSQL</span> \u5728 <span>systemd</span> \u4e0b\u7684\u7ba1\u7406\u3002</p>", "text": "\u6dfb\u52a0 configure \u9009\u9879 --with-systemd \u4ee5\u5728\u670d\u52a1\u5668\u542f\u52a8\u548c\u505c\u6b62\u65f6\u542f\u7528\u8c03\u7528 sd_notify()\uff08Peter Eisentraut\uff09 \u8fd9\u5141\u8bb8\u4f7f\u7528 notify \u7c7b\u578b\u7684 systemd \u670d\u52a1\u5355\u5143\uff0c\u5927\u5927\u7b80\u5316\u4e86 PostgreSQL \u5728 systemd \u4e0b\u7684\u7ba1\u7406\u3002", "title": "\u6dfb\u52a0 configure \u9009\u9879 --with-systemd \u4ee5\u5728\u670d\u52a1\u5668\u542f\u52a8\u548c\u505c\u6b62\u65f6\u542f\u7528\u8c03\u7528 sd_notify()", "commits": [], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.11", "source_hash": "e8cbcf57e94280f2c4db950b7e876d1e9726271a5bc4478344492a44c76c1d37", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["7d17e683f"]], "identity_text": "Add configure option --with-systemd to enable calling sd_notify() at server start and stop (Peter Eisentraut) This allows the use of systemd service units of type notify, which greatly simplifies the management of PostgreSQL under systemd.", "commit_aliases": ["7d17e683f"], "source_commits": ["7d17e683f"], "source_entry_id": "9.6.0/changes/061", "db_id": "6994826f1d4179d20292fa5f5c0e0799", "patch_ids": ["266f8c7f14c1f59b25070620eecb4b3b"], "statement_hash": "28802777523dc1d82ec27bd534ca0a03ccab743441948191dbfb50ebad316c41", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-5ff2263d98c8d9f0", "migration": false}, {"id": "9.6.0-cb87f8eb590b35fd", "cves": [], "html": "<p>\u5141\u8bb8\u670d\u52a1\u5668\u7684 <acronym>SSL</acronym> \u5bc6\u94a5\u6587\u4ef6\u5728\u7531 <code>root</code> \u62e5\u6709\u65f6\u5177\u6709\u7ec4\u8bfb\u8bbf\u95ee\uff08Christoph Berg\uff09</p>\n<p>\u4ee5\u524d\u6211\u4eec\u575a\u6301\u5bc6\u94a5\u6587\u4ef6\u7531\u8fd0\u884c <span>PostgreSQL</span> \u670d\u52a1\u5668\u7684\u7528\u6237\u62e5\u6709\uff0c\u4f46\u5728\u914d\u7f6e\u4e3a\u96c6\u4e2d\u7ba1\u7406\u8bc1\u4e66\u7684\u4e00\u4e9b\u7cfb\u7edf\uff08\u5982 <span>Debian</span>\uff09\u4e0a\u8fd9\u4e0d\u65b9\u4fbf\u3002\u56e0\u6b64\u5141\u8bb8\u5bc6\u94a5\u6587\u4ef6\u7531 <code>root</code> \u62e5\u6709\u5e76\u5177\u6709\u7ec4\u8bfb\u8bbf\u95ee\u7684\u60c5\u51b5\u3002\u7531\u64cd\u4f5c\u7cfb\u7edf\u7ba1\u7406\u5458\u786e\u4fdd\u8be5\u7ec4\u4e0d\u5305\u542b\u4efb\u4f55\u4e0d\u53d7\u4fe1\u4efb\u7684\u7528\u6237\u3002</p>", "text": "\u5141\u8bb8\u670d\u52a1\u5668\u7684 SSL \u5bc6\u94a5\u6587\u4ef6\u5728\u7531 root \u62e5\u6709\u65f6\u5177\u6709\u7ec4\u8bfb\u8bbf\u95ee\uff08Christoph Berg\uff09 \u4ee5\u524d\u6211\u4eec\u575a\u6301\u5bc6\u94a5\u6587\u4ef6\u7531\u8fd0\u884c PostgreSQL \u670d\u52a1\u5668\u7684\u7528\u6237\u62e5\u6709\uff0c\u4f46\u5728\u914d\u7f6e\u4e3a\u96c6\u4e2d\u7ba1\u7406\u8bc1\u4e66\u7684\u4e00\u4e9b\u7cfb\u7edf\uff08\u5982 Debian\uff09\u4e0a\u8fd9\u4e0d\u65b9\u4fbf\u3002\u56e0\u6b64\u5141\u8bb8\u5bc6\u94a5\u6587\u4ef6\u7531 root \u62e5\u6709\u5e76\u5177\u6709\u7ec4\u8bfb\u8bbf\u95ee\u7684\u60c5\u51b5\u3002\u7531\u64cd\u4f5c\u7cfb\u7edf\u7ba1\u7406\u5458\u786e\u4fdd\u8be5\u7ec4\u4e0d\u5305\u542b\u4efb\u4f55\u4e0d\u53d7\u4fe1\u4efb\u7684\u7528\u6237\u3002", "title": "\u5141\u8bb8\u670d\u52a1\u5668\u7684 SSL \u5bc6\u94a5\u6587\u4ef6\u5728\u7531 root \u62e5\u6709\u65f6\u5177\u6709\u7ec4\u8bfb\u8bbf\u95ee", "commits": [], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.11", "source_hash": "936c6250c38d68e120e15ad76688fdf81b545aacc66bc33e33a59e4713c5dc32", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["9a83564c5"]], "identity_text": "Allow the server's SSL key file to have group read access if it is owned by root (Christoph Berg) Formerly, we insisted the key file be owned by the user running the PostgreSQL server, but that is inconvenient on some systems (such as Debian) that are configured to manage certificates centrally. Therefore, allow the case where the key file is owned by root and has group read access. It is up to the operating system administrator to ensure that the group does not include any untrusted users.", "commit_aliases": ["9a83564c5"], "source_commits": ["9a83564c5"], "source_entry_id": "9.6.0/changes/062", "db_id": "c63f0fd58ee2130e8e7669deb9c37034", "patch_ids": ["e6e194bc85d717a23c426a771389679b"], "statement_hash": "3fb7af8175fd5e7ac2c8ec2a15315b0f1b32aea455b68b384bca015e4b18bc41", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-cb87f8eb590b35fd", "migration": false}, {"id": "9.6.0-83089a585362a383", "cves": [], "html": "<p>\u5982\u679c postmaster \u6b7b\u4ea1\uff0c\u5f3a\u5236\u540e\u7aef\u9000\u51fa\uff08Rajeev Rastogi\u3001Robert Haas\uff09</p>\n<p>\u5728\u6b63\u5e38\u60c5\u51b5\u4e0b postmaster \u603b\u662f\u6bd4\u5176\u5b50\u8fdb\u7a0b\u6d3b\u5f97\u957f\u3002\u5982\u679c postmaster \u56e0\u67d0\u79cd\u539f\u56e0\u6b7b\u4ea1\uff0c\u5f3a\u5236\u540e\u7aef\u4f1a\u8bdd\u62a5\u9519\u9000\u51fa\u3002\u4ee5\u524d\u73b0\u6709\u7684\u540e\u7aef\u4f1a\u7ee7\u7eed\u8fd0\u884c\u76f4\u5230\u5176\u5ba2\u6237\u7aef\u65ad\u5f00\uff0c\u4f46\u90a3\u65e2\u4e0d\u5b89\u5168\u53c8\u4f4e\u6548\u3002\u5b83\u8fd8\u963b\u6b62\u65b0\u7684 postmaster \u542f\u52a8\uff0c\u76f4\u5230\u6700\u540e\u4e00\u4e2a\u65e7\u540e\u7aef\u9000\u51fa\u3002\u540e\u7aef\u5c06\u5728\u7b49\u5f85\u5ba2\u6237\u7aef I/O \u65f6\u68c0\u6d4b postmaster \u6b7b\u4ea1\uff0c\u6240\u4ee5\u9000\u51fa\u4e0d\u662f\u77ac\u65f6\u7684\uff0c\u4f46\u4e0d\u4f1a\u665a\u4e8e\u5f53\u524d\u67e5\u8be2\u7ed3\u675f\u3002</p>", "text": "\u5982\u679c postmaster \u6b7b\u4ea1\uff0c\u5f3a\u5236\u540e\u7aef\u9000\u51fa\uff08Rajeev Rastogi\u3001Robert Haas\uff09 \u5728\u6b63\u5e38\u60c5\u51b5\u4e0b postmaster \u603b\u662f\u6bd4\u5176\u5b50\u8fdb\u7a0b\u6d3b\u5f97\u957f\u3002\u5982\u679c postmaster \u56e0\u67d0\u79cd\u539f\u56e0\u6b7b\u4ea1\uff0c\u5f3a\u5236\u540e\u7aef\u4f1a\u8bdd\u62a5\u9519\u9000\u51fa\u3002\u4ee5\u524d\u73b0\u6709\u7684\u540e\u7aef\u4f1a\u7ee7\u7eed\u8fd0\u884c\u76f4\u5230\u5176\u5ba2\u6237\u7aef\u65ad\u5f00\uff0c\u4f46\u90a3\u65e2\u4e0d\u5b89\u5168\u53c8\u4f4e\u6548\u3002\u5b83\u8fd8\u963b\u6b62\u65b0\u7684 postmaster \u542f\u52a8\uff0c\u76f4\u5230\u6700\u540e\u4e00\u4e2a\u65e7\u540e\u7aef\u9000\u51fa\u3002\u540e\u7aef\u5c06\u5728\u7b49\u5f85\u5ba2\u6237\u7aef I/O \u65f6\u68c0\u6d4b postmaster \u6b7b\u4ea1\uff0c\u6240\u4ee5\u9000\u51fa\u4e0d\u662f\u77ac\u65f6\u7684\uff0c\u4f46\u4e0d\u4f1a\u665a\u4e8e\u5f53\u524d\u67e5\u8be2\u7ed3\u675f\u3002", "title": "\u5982\u679c postmaster \u6b7b\u4ea1\uff0c\u5f3a\u5236\u540e\u7aef\u9000\u51fa", "commits": [], "section": "\u670d\u52a1\u5668 / \u53ef\u9760\u6027", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.12", "source_hash": "dc4919e6a6d9620d1640905410ec93ddd83caa79fa984d30064ce410900a0489", "section_path": ["\u670d\u52a1\u5668", "\u53ef\u9760\u6027"], "commit_groups": [["ac1d7945f"]], "identity_text": "Force backends to exit if the postmaster dies (Rajeev Rastogi, Robert Haas) Under normal circumstances the postmaster should always outlive its child processes. If for some reason the postmaster dies, force backend sessions to exit with an error. Formerly, existing backends would continue to run until their clients disconnect, but that is unsafe and inefficient. It also prevents a new postmaster from being started until the last old backend has exited. Backends will detect postmaster death when waiting for client I/O, so the exit will not be instantaneous, but it should happen no later than the end of the current query.", "commit_aliases": ["ac1d7945f"], "source_commits": ["ac1d7945f"], "source_entry_id": "9.6.0/changes/063", "db_id": "b5b0e9f5c11d557d0e6782d925cf63a9", "patch_ids": ["21f5176f8d220ba8a041d87947a7718e"], "statement_hash": "32d6be6c4f63ffa509aaaa696c0a9904086b1c59cba702ff1c80046d618e615b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-83089a585362a383", "migration": false}, {"id": "9.6.0-3a4feed30d182376", "cves": [], "html": "<p>\u5728\u62a5\u544a\u7ea6\u675f\u8fdd\u53cd\u5931\u8d25\u4e4b\u524d\u68c0\u67e5\u53ef\u5e8f\u5217\u5316\u51b2\u7a81\uff08Thomas Munro\uff09</p>\n<p>\u4f7f\u7528\u53ef\u5e8f\u5217\u5316\u4e8b\u52a1\u9694\u79bb\u65f6\uff0c\u5e0c\u671b\u4efb\u4f55\u56e0\u5e76\u53d1\u4e8b\u52a1\u5bfc\u81f4\u7684\u9519\u8bef\u90fd\u8868\u73b0\u4e3a\u5e8f\u5217\u5316\u5931\u8d25\uff0c\u4ece\u800c\u63d0\u793a\u5e94\u7528\u91cd\u8bd5\u53ef\u80fd\u6210\u529f\u3002\u4e0d\u5e78\u7684\u662f\uff0c\u5bf9\u5e76\u53d1\u63d2\u5165\u5bfc\u81f4\u7684\u91cd\u590d\u952e\u5931\u8d25\u8fd9\u4e0d\u80fd\u53ef\u9760\u53d1\u751f\u3002\u6b64\u66f4\u6539\u786e\u4fdd\u5982\u679c\u5e94\u7528\u5728\u4e8b\u52a1\u4e2d\u65e9\u4e9b\u65f6\u5019\u663e\u5f0f\u68c0\u67e5\u8fc7\u51b2\u7a81\u952e\u7684\u5b58\u5728\uff08\u4e14\u672a\u627e\u5230\uff09\uff0c\u8fd9\u79cd\u9519\u8bef\u5c06\u88ab\u62a5\u544a\u4e3a\u5e8f\u5217\u5316\u9519\u8bef\u3002</p>", "text": "\u5728\u62a5\u544a\u7ea6\u675f\u8fdd\u53cd\u5931\u8d25\u4e4b\u524d\u68c0\u67e5\u53ef\u5e8f\u5217\u5316\u51b2\u7a81\uff08Thomas Munro\uff09 \u4f7f\u7528\u53ef\u5e8f\u5217\u5316\u4e8b\u52a1\u9694\u79bb\u65f6\uff0c\u5e0c\u671b\u4efb\u4f55\u56e0\u5e76\u53d1\u4e8b\u52a1\u5bfc\u81f4\u7684\u9519\u8bef\u90fd\u8868\u73b0\u4e3a\u5e8f\u5217\u5316\u5931\u8d25\uff0c\u4ece\u800c\u63d0\u793a\u5e94\u7528\u91cd\u8bd5\u53ef\u80fd\u6210\u529f\u3002\u4e0d\u5e78\u7684\u662f\uff0c\u5bf9\u5e76\u53d1\u63d2\u5165\u5bfc\u81f4\u7684\u91cd\u590d\u952e\u5931\u8d25\u8fd9\u4e0d\u80fd\u53ef\u9760\u53d1\u751f\u3002\u6b64\u66f4\u6539\u786e\u4fdd\u5982\u679c\u5e94\u7528\u5728\u4e8b\u52a1\u4e2d\u65e9\u4e9b\u65f6\u5019\u663e\u5f0f\u68c0\u67e5\u8fc7\u51b2\u7a81\u952e\u7684\u5b58\u5728\uff08\u4e14\u672a\u627e\u5230\uff09\uff0c\u8fd9\u79cd\u9519\u8bef\u5c06\u88ab\u62a5\u544a\u4e3a\u5e8f\u5217\u5316\u9519\u8bef\u3002", "title": "\u5728\u62a5\u544a\u7ea6\u675f\u8fdd\u53cd\u5931\u8d25\u4e4b\u524d\u68c0\u67e5\u53ef\u5e8f\u5217\u5316\u51b2\u7a81", "commits": [], "section": "\u670d\u52a1\u5668 / \u53ef\u9760\u6027", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.12", "source_hash": "ac276961f23e98ce6bef38287ddbea7e02c6121081afd8fc695cffa92ed780af", "section_path": ["\u670d\u52a1\u5668", "\u53ef\u9760\u6027"], "commit_groups": [["fcff8a575"]], "identity_text": "Check for serializability conflicts before reporting constraint-violation failures (Thomas Munro) When using serializable transaction isolation, it is desirable that any error due to concurrent transactions should manifest as a serialization failure, thereby cueing the application that a retry might succeed. Unfortunately, this does not reliably happen for duplicate-key failures caused by concurrent insertions. This change ensures that such an error will be reported as a serialization error if the application explicitly checked for the presence of a conflicting key (and did not find it) earlier in the transaction.", "commit_aliases": ["fcff8a575"], "source_commits": ["fcff8a575"], "source_entry_id": "9.6.0/changes/064", "db_id": "b8cc53380765d846354e52618f192ffa", "patch_ids": ["4d15bb238596ea3d41244d0bb519bd52"], "statement_hash": "7b9b2c500fbdea8d99ce0b203d2a1adb8acb559963c6f180422d3b31173803ba", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-3a4feed30d182376", "migration": false}, {"id": "9.6.0-8b36a4a4b31d2d4b", "cves": [], "html": "<p>\u786e\u4fdd\u5931\u6548\u6d88\u606f\u5373\u4f7f\u7531\u672a\u5206\u914d <acronym>XID</acronym> \u7684\u4e8b\u52a1\u53d1\u51fa\u4e5f\u88ab\u8bb0\u5f55\u5230 <acronym>WAL</acronym> \u4e2d\uff08Andres Freund\uff09</p>\n<p>\u8fd9\u4fee\u590d\u4e86\u4e00\u4e9b\u5907\u5e93\u670d\u52a1\u5668\u4e0a\u7684\u4e8b\u52a1\u6ca1\u6709\u6ce8\u610f\u5230\u66f4\u6539\uff08\u5982\u65b0\u7d22\u5f15\uff09\u7684\u8fb9\u754c\u60c5\u51b5\u3002</p>", "text": "\u786e\u4fdd\u5931\u6548\u6d88\u606f\u5373\u4f7f\u7531\u672a\u5206\u914d XID \u7684\u4e8b\u52a1\u53d1\u51fa\u4e5f\u88ab\u8bb0\u5f55\u5230 WAL \u4e2d\uff08Andres Freund\uff09 \u8fd9\u4fee\u590d\u4e86\u4e00\u4e9b\u5907\u5e93\u670d\u52a1\u5668\u4e0a\u7684\u4e8b\u52a1\u6ca1\u6709\u6ce8\u610f\u5230\u66f4\u6539\uff08\u5982\u65b0\u7d22\u5f15\uff09\u7684\u8fb9\u754c\u60c5\u51b5\u3002", "title": "\u786e\u4fdd\u5931\u6548\u6d88\u606f\u5373\u4f7f\u7531\u672a\u5206\u914d XID \u7684\u4e8b\u52a1\u53d1\u51fa\u4e5f\u88ab\u8bb0\u5f55\u5230 WAL \u4e2d", "commits": [], "section": "\u670d\u52a1\u5668 / \u53ef\u9760\u6027", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.12", "source_hash": "4ffa1504804c4ade9cdc1dcfb0f1d44e465b3a4bbd2a03b381c7a8bf54cd296d", "section_path": ["\u670d\u52a1\u5668", "\u53ef\u9760\u6027"], "commit_groups": [["c6ff84b06"]], "identity_text": "Ensure that invalidation messages are recorded in WAL even when issued by a transaction that has no XID assigned (Andres Freund) This fixes some corner cases in which transactions on standby servers failed to notice changes, such as new indexes.", "commit_aliases": ["c6ff84b06"], "source_commits": ["c6ff84b06"], "source_entry_id": "9.6.0/changes/065", "db_id": "7e9c2dd1f47115145052e4d9c19bfd99", "patch_ids": ["56cb443fb625c151a4e0e61a330698e5"], "statement_hash": "e18907fae37afaf5a2c02a42e90f770ace68651966019e020fd75667408ae376", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-8b36a4a4b31d2d4b", "migration": false}, {"id": "9.6.0-c4740f53c59454e7", "cves": [], "html": "<p>\u9632\u6b62\u591a\u4e2a\u8fdb\u7a0b\u5e76\u53d1\u5c1d\u8bd5\u6e05\u7406 <acronym>GIN</acronym> \u7d22\u5f15\u7684\u672a\u51b3\u5217\u8868\uff08Teodor Sigaev\u3001Jeff Janes\uff09</p>\n<p>\u8fd9\u662f\u6709\u610f\u5141\u8bb8\u7684\uff0c\u4f46\u5b83\u5bfc\u81f4\u7684\u7ade\u6001\u6761\u4ef6\u53ef\u80fd\u4f7f\u6e05\u7406\u9057\u6f0f\u5b83\u9700\u8981\u5220\u9664\u7684\u7d22\u5f15\u6761\u76ee\u3002</p>", "text": "\u9632\u6b62\u591a\u4e2a\u8fdb\u7a0b\u5e76\u53d1\u5c1d\u8bd5\u6e05\u7406 GIN \u7d22\u5f15\u7684\u672a\u51b3\u5217\u8868\uff08Teodor Sigaev\u3001Jeff Janes\uff09 \u8fd9\u662f\u6709\u610f\u5141\u8bb8\u7684\uff0c\u4f46\u5b83\u5bfc\u81f4\u7684\u7ade\u6001\u6761\u4ef6\u53ef\u80fd\u4f7f\u6e05\u7406\u9057\u6f0f\u5b83\u9700\u8981\u5220\u9664\u7684\u7d22\u5f15\u6761\u76ee\u3002", "title": "\u9632\u6b62\u591a\u4e2a\u8fdb\u7a0b\u5e76\u53d1\u5c1d\u8bd5\u6e05\u7406 GIN \u7d22\u5f15\u7684\u672a\u51b3\u5217\u8868", "commits": [], "section": "\u670d\u52a1\u5668 / \u53ef\u9760\u6027", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.3.12", "source_hash": "6b410808196e1c2442f1dc0726b6ee8410caf35ff06bf3330dc0c20c8859a8dd", "section_path": ["\u670d\u52a1\u5668", "\u53ef\u9760\u6027"], "commit_groups": [["e2c79e14d"]], "identity_text": "Prevent multiple processes from trying to clean a GIN index's pending list concurrently (Teodor Sigaev, Jeff Janes) This had been intentionally allowed, but it causes race conditions that can result in vacuum missing index entries it needs to delete.", "commit_aliases": ["e2c79e14d"], "source_commits": ["e2c79e14d"], "source_entry_id": "9.6.0/changes/066", "db_id": "e0deaf013e38d26391a2a0f5b1f7062e", "patch_ids": ["8d53db94de3745ab52f624e87d7f4e6d"], "statement_hash": "66c3cc329e95d86cf9ef8ed9286f01c97c51620ae0ced22b00886c1c8e549c64", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-c4740f53c59454e7", "migration": false}, {"id": "9.6.0-d76678b86a914f9f", "cves": [], "html": "<p>\u5141\u8bb8\u540c\u6b65\u590d\u5236\u652f\u6301\u591a\u4e2a\u540c\u65f6\u7684\u540c\u6b65\u5907\u5e93\u670d\u52a1\u5668\u800c\u4e0d\u53ea\u662f\u4e00\u4e2a\uff08Masahiko Sawada\u3001Beena Emerson\u3001Michael Paquier\u3001Fujii Masao\u3001Kyotaro Horiguchi\uff09</p>\n<p>\u63d0\u4ea4\u88ab\u8ba4\u4e3a\u5b8c\u6210\u4e4b\u524d\u5fc5\u987b\u786e\u8ba4\u7684\u5907\u5e93\u670d\u52a1\u5668\u6570\u91cf\u73b0\u5728\u53ef\u4f5c\u4e3a<a href=\"/docs/9.6/runtime-config-replication.html#GUC-SYNCHRONOUS-STANDBY-NAMES\">synchronous_standby_names</a>\u53c2\u6570\u7684\u4e00\u90e8\u5206\u8fdb\u884c\u914d\u7f6e\u3002</p>", "text": "\u5141\u8bb8\u540c\u6b65\u590d\u5236\u652f\u6301\u591a\u4e2a\u540c\u65f6\u7684\u540c\u6b65\u5907\u5e93\u670d\u52a1\u5668\u800c\u4e0d\u53ea\u662f\u4e00\u4e2a\uff08Masahiko Sawada\u3001Beena Emerson\u3001Michael Paquier\u3001Fujii Masao\u3001Kyotaro Horiguchi\uff09 \u63d0\u4ea4\u88ab\u8ba4\u4e3a\u5b8c\u6210\u4e4b\u524d\u5fc5\u987b\u786e\u8ba4\u7684\u5907\u5e93\u670d\u52a1\u5668\u6570\u91cf\u73b0\u5728\u53ef\u4f5c\u4e3asynchronous_standby_names\u53c2\u6570\u7684\u4e00\u90e8\u5206\u8fdb\u884c\u914d\u7f6e\u3002", "title": "\u5141\u8bb8\u540c\u6b65\u590d\u5236\u652f\u6301\u591a\u4e2a\u540c\u65f6\u7684\u540c\u6b65\u5907\u5e93\u670d\u52a1\u5668\u800c\u4e0d\u53ea\u662f\u4e00\u4e2a", "commits": [], "section": "\u590d\u5236\u4e0e\u6062\u590d", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.4", "source_hash": "0615a6b2ce96f9f3b45b65add789d462d9b44e5c89ec8450e612048257251859", "section_path": ["\u590d\u5236\u4e0e\u6062\u590d"], "commit_groups": [["17d5db352"], ["4c804fbdf"], ["989be0810"]], "identity_text": "Allow synchronous replication to support multiple simultaneous synchronous standby servers, not just one (Masahiko Sawada, Beena Emerson, Michael Paquier, Fujii Masao, Kyotaro Horiguchi) The number of standby servers that must acknowledge a commit before it is considered complete is now configurable as part of the guc-synchronous-standby-names parameter.", "commit_aliases": ["17d5db352", "4c804fbdf", "989be0810"], "source_commits": ["17d5db352", "4c804fbdf", "989be0810"], "source_entry_id": "9.6.0/changes/067", "db_id": "4032316fdcd8e8813f441c70fceb7222", "patch_ids": ["215923ec184ec901c660a20ad7c2cc38", "edcfbd6b7be38b266a853a4edd9b8d7f", "f3db3e9cc894b5b4c27cc1d1f26a106c"], "statement_hash": "153eab7a55f5e59dceebe3c01314b71154cebb795ab70945d8154a8cda920e67", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-d76678b86a914f9f", "migration": false}, {"id": "9.6.0-3371346bf38794a0", "cves": [], "html": "<p>\u4e3a\u914d\u7f6e\u53c2\u6570<a href=\"/docs/9.6/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT\">synchronous_commit</a>\u6dfb\u52a0\u65b0\u8bbe\u7f6e <code>remote_apply</code>\uff08Thomas Munro\uff09</p>\n<p>\u5728\u8fd9\u79cd\u6a21\u5f0f\u4e0b\uff0c\u4e3b\u5e93\u7b49\u5f85\u4e8b\u52a1\u5728\u5907\u5e93\u670d\u52a1\u5668\u4e0a\u88ab<span><em>\u5e94\u7528</em></span>\u800c\u4e0d\u53ea\u662f\u5199\u5165\u78c1\u76d8\u3002\u8fd9\u610f\u5473\u7740\u4f60\u53ef\u4ee5\u6307\u671b\u5907\u5e93\u4e0a\u542f\u52a8\u7684\u4e8b\u52a1\u770b\u5230\u4e3b\u5e93\u5148\u524d\u786e\u8ba4\u7684\u6240\u6709\u63d0\u4ea4\u3002</p>", "text": "\u4e3a\u914d\u7f6e\u53c2\u6570synchronous_commit\u6dfb\u52a0\u65b0\u8bbe\u7f6e remote_apply\uff08Thomas Munro\uff09 \u5728\u8fd9\u79cd\u6a21\u5f0f\u4e0b\uff0c\u4e3b\u5e93\u7b49\u5f85\u4e8b\u52a1\u5728\u5907\u5e93\u670d\u52a1\u5668\u4e0a\u88ab\u5e94\u7528\u800c\u4e0d\u53ea\u662f\u5199\u5165\u78c1\u76d8\u3002\u8fd9\u610f\u5473\u7740\u4f60\u53ef\u4ee5\u6307\u671b\u5907\u5e93\u4e0a\u542f\u52a8\u7684\u4e8b\u52a1\u770b\u5230\u4e3b\u5e93\u5148\u524d\u786e\u8ba4\u7684\u6240\u6709\u63d0\u4ea4\u3002", "title": "\u4e3a\u914d\u7f6e\u53c2\u6570synchronous_commit\u6dfb\u52a0\u65b0\u8bbe\u7f6e remote_apply", "commits": [], "section": "\u590d\u5236\u4e0e\u6062\u590d", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.4", "source_hash": "220b6c06430e48f117ca28c9d9c9382fd3aaa8580f4ba3ff995b7731acb1603d", "section_path": ["\u590d\u5236\u4e0e\u6062\u590d"], "commit_groups": [["314cbfc5d"]], "identity_text": "Add new setting remote_apply for configuration parameter guc-synchronous-commit (Thomas Munro) In this mode, the master waits for the transaction to be applied on the standby server, not just written to disk. That means that you can count on a transaction started on the standby to see all commits previously acknowledged by the master.", "commit_aliases": ["314cbfc5d"], "source_commits": ["314cbfc5d"], "source_entry_id": "9.6.0/changes/068", "db_id": "fccb22a56c56feec4e10ce394b033999", "patch_ids": ["4a0a9cdcae2c5ce04aaa01778a918ff1"], "statement_hash": "0696ddc2133bf8965ded75d87ca58f366d42f27277bd66d4f3833e798104d850", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-3371346bf38794a0", "migration": false}, {"id": "9.6.0-68bf8363e8dd7b82", "cves": [], "html": "<p>\u4e3a\u590d\u5236\u534f\u8bae\u6dfb\u52a0\u4e00\u9879\u7279\u6027\uff0c\u5e76\u4e3a <a href=\"/docs/9.6/functions-admin.html#FUNCTIONS-REPLICATION-TABLE\" title=\"\u8868\u00a09.82.\u00a0\u590d\u5236 SQL \u51fd\u6570\"><code>pg_create_physical_replication_slot()</code></a> \u6dfb\u52a0\u76f8\u5e94\u9009\u9879\uff0c\u5141\u8bb8\u5728\u521b\u5efa\u590d\u5236\u69fd\u65f6\u7acb\u5373\u4fdd\u7559 <acronym>WAL</acronym>\uff08Gurjeet Singh\u3001Michael Paquier\uff09</p>\n<p>\u8fd9\u5141\u8bb8\u521b\u5efa\u590d\u5236\u69fd\u6765\u4fdd\u8bc1\u57fa\u7840\u5907\u4efd\u6240\u9700\u7684\u6240\u6709 <acronym>WAL</acronym> \u90fd\u53ef\u7528\u3002</p>", "text": "\u4e3a\u590d\u5236\u534f\u8bae\u6dfb\u52a0\u4e00\u9879\u7279\u6027\uff0c\u5e76\u4e3a pg_create_physical_replication_slot() \u6dfb\u52a0\u76f8\u5e94\u9009\u9879\uff0c\u5141\u8bb8\u5728\u521b\u5efa\u590d\u5236\u69fd\u65f6\u7acb\u5373\u4fdd\u7559 WAL\uff08Gurjeet Singh\u3001Michael Paquier\uff09 \u8fd9\u5141\u8bb8\u521b\u5efa\u590d\u5236\u69fd\u6765\u4fdd\u8bc1\u57fa\u7840\u5907\u4efd\u6240\u9700\u7684\u6240\u6709 WAL \u90fd\u53ef\u7528\u3002", "title": "\u4e3a\u590d\u5236\u534f\u8bae\u6dfb\u52a0\u4e00\u9879\u7279\u6027\uff0c\u5e76\u4e3a pg_create_physical_replication_slot() \u6dfb\u52a0\u76f8\u5e94\u9009\u9879\uff0c\u5141\u8bb8\u5728\u521b\u5efa\u590d\u5236\u69fd\u65f6\u7acb\u5373\u4fdd\u7559 WAL", "commits": [], "section": "\u590d\u5236\u4e0e\u6062\u590d", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.4", "source_hash": "c222377b6bce013e24abd8fb2522511054053db3246c51e69f4b247f391c3c3d", "section_path": ["\u590d\u5236\u4e0e\u6062\u590d"], "commit_groups": [["6fcd88511"], ["c314ead5b"]], "identity_text": "Add a feature to the replication protocol, and a corresponding option to pg_create_physical_replication_slot(), to allow reserving WAL immediately when creating a replication slot (Gurjeet Singh, Michael Paquier) This allows the creation of a replication slot to guarantee that all the WAL needed for a base backup will be available.", "commit_aliases": ["6fcd88511", "c314ead5b"], "source_commits": ["6fcd88511", "c314ead5b"], "source_entry_id": "9.6.0/changes/069", "db_id": "319fe44d1edf098a2346b2c7849b47a4", "patch_ids": ["257f8f2afef937882e67ab1368cc8141", "8e3192ddea07d1b7c6c51293ded33844"], "statement_hash": "e3ecf7db0fc4fae13dc43e23e0be962dde77aff4f0e72ae0c587f8d00ef49d49", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-68bf8363e8dd7b82", "migration": false}, {"id": "9.6.0-88994f98c44c2112", "cves": [], "html": "<p>\u4e3a<a href=\"/docs/9.6/app-pgbasebackup.html\" title=\"pg_basebackup\"><span>pg_basebackup</span></a>\u6dfb\u52a0 <code>--slot</code> \u9009\u9879\uff08Peter Eisentraut\uff09</p>\n<p>\u8fd9\u8ba9 <span>pg_basebackup</span> \u80fd\u4f7f\u7528\u4e3a <acronym>WAL</acronym> \u6d41\u5f0f\u4f20\u8f93\u5b9a\u4e49\u7684\u590d\u5236\u69fd\u3002\u57fa\u7840\u5907\u4efd\u5b8c\u6210\u540e\uff0c\u4e3a\u5e38\u89c4\u6d41\u590d\u5236\u9009\u62e9\u540c\u4e00\u69fd\u5141\u8bb8\u65b0\u7684\u5907\u5e93\u670d\u52a1\u5668\u65e0\u7f1d\u542f\u52a8\u3002</p>", "text": "\u4e3apg_basebackup\u6dfb\u52a0 --slot \u9009\u9879\uff08Peter Eisentraut\uff09 \u8fd9\u8ba9 pg_basebackup \u80fd\u4f7f\u7528\u4e3a WAL \u6d41\u5f0f\u4f20\u8f93\u5b9a\u4e49\u7684\u590d\u5236\u69fd\u3002\u57fa\u7840\u5907\u4efd\u5b8c\u6210\u540e\uff0c\u4e3a\u5e38\u89c4\u6d41\u590d\u5236\u9009\u62e9\u540c\u4e00\u69fd\u5141\u8bb8\u65b0\u7684\u5907\u5e93\u670d\u52a1\u5668\u65e0\u7f1d\u542f\u52a8\u3002", "title": "\u4e3apg_basebackup\u6dfb\u52a0 --slot \u9009\u9879", "commits": [], "section": "\u590d\u5236\u4e0e\u6062\u590d", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.4", "source_hash": "eb157f0576be9bc9779196ca50c01d4167998067d8041d9c17ab53ba60e383f6", "section_path": ["\u590d\u5236\u4e0e\u6062\u590d"], "commit_groups": [["0dc848b03"]], "identity_text": "Add a --slot option to pg_basebackup (Peter Eisentraut) This lets pg_basebackup use a replication slot defined for WAL streaming. After the base backup completes, selecting the same slot for regular streaming replication allows seamless startup of the new standby server.", "commit_aliases": ["0dc848b03"], "source_commits": ["0dc848b03"], "source_entry_id": "9.6.0/changes/070", "db_id": "5f8e05a3fa7ac1e6f31313c5f302c3bf", "patch_ids": ["3c834d40e67eeb6360412b1cdbc49380"], "statement_hash": "779d2f757749b04c8506ee05fd6d91cf98ef086bdccd656d3ffe5b49c71bd097", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-88994f98c44c2112", "migration": false}, {"id": "9.6.0-aa2802086f3d1f16", "cves": [], "html": "<p>\u6269\u5c55 <a href=\"/docs/9.6/functions-admin.html#FUNCTIONS-ADMIN-BACKUP-TABLE\" title=\"\u8868\u00a09.78.\u00a0\u5907\u4efd\u63a7\u5236\u51fd\u6570\"><code>pg_start_backup()</code></a> \u548c <code>pg_stop_backup()</code> \u4ee5\u652f\u6301\u975e\u72ec\u5360\u5907\u4efd\uff08Magnus Hagander\uff09</p>", "text": "\u6269\u5c55 pg_start_backup() \u548c pg_stop_backup() \u4ee5\u652f\u6301\u975e\u72ec\u5360\u5907\u4efd\uff08Magnus Hagander\uff09", "title": "\u6269\u5c55 pg_start_backup() \u548c pg_stop_backup() \u4ee5\u652f\u6301\u975e\u72ec\u5360\u5907\u4efd", "commits": [], "section": "\u590d\u5236\u4e0e\u6062\u590d", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.4", "source_hash": "d71e83a0ab980db56cd8abc8174d01813a997297cc0ae31411c02ad0f0edf5f2", "section_path": ["\u590d\u5236\u4e0e\u6062\u590d"], "commit_groups": [["711768546"], ["87d84d67b"]], "identity_text": "Extend pg_start_backup() and pg_stop_backup() to support non-exclusive backups (Magnus Hagander)", "commit_aliases": ["711768546", "87d84d67b"], "source_commits": ["711768546", "87d84d67b"], "source_entry_id": "9.6.0/changes/071", "db_id": "dca55d936a92b8690a471c2311fcd45e", "patch_ids": ["0e418466db412e3335af734c3a39751c", "cff46614ffac5cd0b2080bc2dbaabd92"], "statement_hash": "ff8742009cd2a98231ef5022062c6a2ad2ac7cffeae481e34df61a7c0feab2c7", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-aa2802086f3d1f16", "migration": false}, {"id": "9.6.0-02cbf719e42f687c", "cves": [], "html": "<p>\u5141\u8bb8\u8fd4\u56de\u5143\u7ec4\u96c6\u5408\u7684\u51fd\u6570\u8fd4\u56de\u7b80\u5355\u7684 <code>NULL</code>\uff08Andrew Gierth\u3001Tom Lane\uff09</p>\n<p>\u5728 <code>SELECT FROM function(...)</code> \u7684\u4e0a\u4e0b\u6587\u4e2d\uff0c\u8fd4\u56de\u590d\u5408\u503c\u96c6\u5408\u7684\u51fd\u6570\u4ee5\u524d\u4e0d\u5141\u8bb8\u4f5c\u4e3a\u96c6\u5408\u7684\u4e00\u90e8\u5206\u8fd4\u56de\u666e\u901a\u7684 <code>NULL</code> \u503c\u3002\u73b0\u5728\u8fd9\u662f\u5141\u8bb8\u7684\u5e76\u88ab\u89e3\u91ca\u4e3a\u4e00\u884c <code>NULL</code>\u3002\u8fd9\u907f\u514d\u4e86\u4f8b\u5982\u5c55\u5f00\u590d\u5408\u503c\u6570\u7ec4\u65f6\u7684\u8fb9\u754c\u9519\u8bef\u3002</p>", "text": "\u5141\u8bb8\u8fd4\u56de\u5143\u7ec4\u96c6\u5408\u7684\u51fd\u6570\u8fd4\u56de\u7b80\u5355\u7684 NULL\uff08Andrew Gierth\u3001Tom Lane\uff09 \u5728 SELECT FROM function(...) \u7684\u4e0a\u4e0b\u6587\u4e2d\uff0c\u8fd4\u56de\u590d\u5408\u503c\u96c6\u5408\u7684\u51fd\u6570\u4ee5\u524d\u4e0d\u5141\u8bb8\u4f5c\u4e3a\u96c6\u5408\u7684\u4e00\u90e8\u5206\u8fd4\u56de\u666e\u901a\u7684 NULL \u503c\u3002\u73b0\u5728\u8fd9\u662f\u5141\u8bb8\u7684\u5e76\u88ab\u89e3\u91ca\u4e3a\u4e00\u884c NULL\u3002\u8fd9\u907f\u514d\u4e86\u4f8b\u5982\u5c55\u5f00\u590d\u5408\u503c\u6570\u7ec4\u65f6\u7684\u8fb9\u754c\u9519\u8bef\u3002", "title": "\u5141\u8bb8\u8fd4\u56de\u5143\u7ec4\u96c6\u5408\u7684\u51fd\u6570\u8fd4\u56de\u7b80\u5355\u7684 NULL", "commits": [], "section": "\u67e5\u8be2", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.5", "source_hash": "f00fa9ec49db65bc155309afdc2cb00989ee73cbad44b3da6b281525614b2f83", "section_path": ["\u67e5\u8be2"], "commit_groups": [["d8411a6c8"]], "identity_text": "Allow functions that return sets of tuples to return simple NULLs (Andrew Gierth, Tom Lane) In the context of SELECT FROM function(...), a function that returned a set of composite values was previously not allowed to return a plain NULL value as part of the set. Now that is allowed and interpreted as a row of NULLs. This avoids corner-case errors with, for example, unnesting an array of composite values.", "commit_aliases": ["d8411a6c8"], "source_commits": ["d8411a6c8"], "source_entry_id": "9.6.0/changes/072", "db_id": "eaef868188f5ff4c98a2cb1b671c019a", "patch_ids": ["d9278e7d43e9bfbe00bc0242e9455583"], "statement_hash": "221183a942c7638472a304b4224c716107cfca7324d02febc0c75d778a615d5a", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-02cbf719e42f687c", "migration": false}, {"id": "9.6.0-4bcf5dbf6acaf497", "cves": [], "html": "<p>\u5b8c\u5168\u652f\u6301\u5e26\u591a\u884c <code>VALUES</code> \u7684 <code>INSERT</code> \u7684\u76ee\u6807\u5217\u5217\u8868\u4e2d\u7684\u6570\u7ec4\u4e0b\u6807\u548c\u5b57\u6bb5\u9009\u62e9\uff08Tom Lane\uff09</p>\n<p>\u4ee5\u524d\u8fd9\u79cd\u60c5\u51b5\u4e0b\u5982\u679c\u540c\u4e00\u76ee\u6807\u5217\u88ab\u63d0\u53ca\u591a\u4e8e\u4e00\u6b21\u5c31\u4f1a\u5931\u8d25\uff0c\u4f8b\u5982 <code>INSERT INTO tab (x[1], x[2]) VALUES (...)</code>\u3002</p>", "text": "\u5b8c\u5168\u652f\u6301\u5e26\u591a\u884c VALUES \u7684 INSERT \u7684\u76ee\u6807\u5217\u5217\u8868\u4e2d\u7684\u6570\u7ec4\u4e0b\u6807\u548c\u5b57\u6bb5\u9009\u62e9\uff08Tom Lane\uff09 \u4ee5\u524d\u8fd9\u79cd\u60c5\u51b5\u4e0b\u5982\u679c\u540c\u4e00\u76ee\u6807\u5217\u88ab\u63d0\u53ca\u591a\u4e8e\u4e00\u6b21\u5c31\u4f1a\u5931\u8d25\uff0c\u4f8b\u5982 INSERT INTO tab (x[1], x[2]) VALUES (...)\u3002", "title": "\u5b8c\u5168\u652f\u6301\u5e26\u591a\u884c VALUES \u7684 INSERT \u7684\u76ee\u6807\u5217\u5217\u8868\u4e2d\u7684\u6570\u7ec4\u4e0b\u6807\u548c\u5b57\u6bb5\u9009\u62e9", "commits": [], "section": "\u67e5\u8be2", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.5", "source_hash": "949ba79021765ddbf6e6528fe66de8f7ea0a2a0fcc58250df59cc508e6679654", "section_path": ["\u67e5\u8be2"], "commit_groups": [["a3c7a993d"]], "identity_text": "Fully support array subscripts and field selections in the target column list of an INSERT with multiple VALUES rows (Tom Lane) Previously, such cases failed if the same target column was mentioned more than once, e.g., INSERT INTO tab (x[1], x[2]) VALUES (...).", "commit_aliases": ["a3c7a993d"], "source_commits": ["a3c7a993d"], "source_entry_id": "9.6.0/changes/073", "db_id": "17976aaf7f2da10841d9a74141a63cf0", "patch_ids": ["43d7f6276dfff63b5a77acced89bad92"], "statement_hash": "f20f3f4114af45cfc993b735bdb3a51273ede6da3245a712bb43de5c4112f9a6", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-4bcf5dbf6acaf497", "migration": false}, {"id": "9.6.0-420a512ec91aecb7", "cves": [], "html": "<p>\u5728\u9002\u5f53\u4e4b\u5904\u628a <code>SELECT</code> \u8f93\u51fa\u8868\u8fbe\u5f0f\u7684\u6c42\u503c\u63a8\u8fdf\u5230 <code>ORDER BY</code> \u6392\u5e8f\u4e4b\u540e\uff08Konstantin Knizhnik\uff09</p>\n<p>\u6b64\u66f4\u6539\u786e\u4fdd\u8f93\u51fa\u5217\u8868\u4e2d\u7684\u6613\u53d8\u6216\u6602\u8d35\u51fd\u6570\u6309 <code>ORDER BY</code> \u5efa\u8bae\u7684\u987a\u5e8f\u6267\u884c\uff0c\u5e76\u4e14\u5f53\u6709 <code>LIMIT</code> \u5b50\u53e5\u65f6\u4e0d\u4f1a\u88ab\u6c42\u503c\u8d85\u8fc7\u9700\u8981\u7684\u6b21\u6570\u3002\u4ee5\u524d\u5982\u679c\u6392\u5e8f\u7531\u7d22\u5f15\u626b\u63cf\u6216\u5408\u5e76\u524d\u6392\u5e8f\u6267\u884c\u8fd9\u4e9b\u6027\u8d28\u6210\u7acb\uff0c\u4f46\u7531\u9876\u5c42\u6392\u5e8f\u6267\u884c\u65f6\u4e0d\u6210\u7acb\u3002</p>", "text": "\u5728\u9002\u5f53\u4e4b\u5904\u628a SELECT \u8f93\u51fa\u8868\u8fbe\u5f0f\u7684\u6c42\u503c\u63a8\u8fdf\u5230 ORDER BY \u6392\u5e8f\u4e4b\u540e\uff08Konstantin Knizhnik\uff09 \u6b64\u66f4\u6539\u786e\u4fdd\u8f93\u51fa\u5217\u8868\u4e2d\u7684\u6613\u53d8\u6216\u6602\u8d35\u51fd\u6570\u6309 ORDER BY \u5efa\u8bae\u7684\u987a\u5e8f\u6267\u884c\uff0c\u5e76\u4e14\u5f53\u6709 LIMIT \u5b50\u53e5\u65f6\u4e0d\u4f1a\u88ab\u6c42\u503c\u8d85\u8fc7\u9700\u8981\u7684\u6b21\u6570\u3002\u4ee5\u524d\u5982\u679c\u6392\u5e8f\u7531\u7d22\u5f15\u626b\u63cf\u6216\u5408\u5e76\u524d\u6392\u5e8f\u6267\u884c\u8fd9\u4e9b\u6027\u8d28\u6210\u7acb\uff0c\u4f46\u7531\u9876\u5c42\u6392\u5e8f\u6267\u884c\u65f6\u4e0d\u6210\u7acb\u3002", "title": "\u5728\u9002\u5f53\u4e4b\u5904\u628a SELECT \u8f93\u51fa\u8868\u8fbe\u5f0f\u7684\u6c42\u503c\u63a8\u8fdf\u5230 ORDER BY \u6392\u5e8f\u4e4b\u540e", "commits": [], "section": "\u67e5\u8be2", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.5", "source_hash": "ad277dd9646b41db021ddf3f65d744806eb6e285f683508382bfdf06782adccb", "section_path": ["\u67e5\u8be2"], "commit_groups": [["9118d03a8"], ["d543170f2"]], "identity_text": "When appropriate, postpone evaluation of SELECT output expressions until after an ORDER BY sort (Konstantin Knizhnik) This change ensures that volatile or expensive functions in the output list are executed in the order suggested by ORDER BY, and that they are not evaluated more times than required when there is a LIMIT clause. Previously, these properties held if the ordering was performed by an index scan or pre-merge-join sort, but not if it was performed by a top-level sort.", "commit_aliases": ["9118d03a8", "d543170f2"], "source_commits": ["9118d03a8", "d543170f2"], "source_entry_id": "9.6.0/changes/074", "db_id": "3ef0781024b8b527e8fb3697c0b0e93a", "patch_ids": ["60726c3f69689950e0487ceeb0b10b9e", "7603786614cb76cc5b04c0defe848501"], "statement_hash": "9ce59327b6d579a61f8bdec14f234688b370d636acf0972ace4616e94fb1dcc7", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-420a512ec91aecb7", "migration": false}, {"id": "9.6.0-d44d727af1ca6be3", "cves": [], "html": "<p>\u628a\u8bb0\u5f55\u5df2\u5904\u7406\u5143\u7ec4\u6570\u7684\u8ba1\u6570\u5668\u52a0\u5bbd\u5230 64 \u4f4d\uff08Andreas Scherbaum\uff09</p>\n<p>\u6b64\u66f4\u6539\u5141\u8bb8\u547d\u4ee4\u6807\u8bb0\uff08\u5982 <code>SELECT</code>\uff09\u6b63\u786e\u62a5\u544a\u8d85\u8fc7 40 \u4ebf\u7684\u5143\u7ec4\u6570\u3002\u8fd9\u4e5f\u9002\u7528\u4e8e PL/pgSQL \u7684 <code>GET DIAGNOSTICS ... ROW_COUNT</code> \u547d\u4ee4\u3002</p>", "text": "\u628a\u8bb0\u5f55\u5df2\u5904\u7406\u5143\u7ec4\u6570\u7684\u8ba1\u6570\u5668\u52a0\u5bbd\u5230 64 \u4f4d\uff08Andreas Scherbaum\uff09 \u6b64\u66f4\u6539\u5141\u8bb8\u547d\u4ee4\u6807\u8bb0\uff08\u5982 SELECT\uff09\u6b63\u786e\u62a5\u544a\u8d85\u8fc7 40 \u4ebf\u7684\u5143\u7ec4\u6570\u3002\u8fd9\u4e5f\u9002\u7528\u4e8e PL/pgSQL \u7684 GET DIAGNOSTICS ... ROW_COUNT \u547d\u4ee4\u3002", "title": "\u628a\u8bb0\u5f55\u5df2\u5904\u7406\u5143\u7ec4\u6570\u7684\u8ba1\u6570\u5668\u52a0\u5bbd\u5230 64 \u4f4d", "commits": [], "section": "\u67e5\u8be2", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.5", "source_hash": "dc1bbb9af5da105ac532733a1eb1a0142edd5e21e8a3e7843341d5fa8bdf428a", "section_path": ["\u67e5\u8be2"], "commit_groups": [["23a27b039"], ["74a379b98"]], "identity_text": "Widen counters recording the number of tuples processed to 64 bits (Andreas Scherbaum) This change allows command tags, e.g., SELECT, to correctly report tuple counts larger than 4 billion. This also applies to PL/pgSQL's GET DIAGNOSTICS ... ROW_COUNT command.", "commit_aliases": ["23a27b039", "74a379b98"], "source_commits": ["23a27b039", "74a379b98"], "source_entry_id": "9.6.0/changes/075", "db_id": "05a0711d78944806983c9260f1d1da71", "patch_ids": ["47605db42bd814c07c3cd374a26820a6", "ad9946d8edcec200f17545acf4053c48"], "statement_hash": "e2dfbcd474014ed1974c9a851e78f5a68ad1733fc657f6b02dcf731778af60ce", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-d44d727af1ca6be3", "migration": false}, {"id": "9.6.0-3be9f88c41e8b145", "cves": [], "html": "<p>\u907f\u514d\u901a\u8fc7 <code>MULE_INTERNAL</code> \u7f16\u7801\u8fdb\u884c\u7f16\u7801\u8f6c\u6362\uff08Tom Lane\uff09</p>\n<p>\u4ee5\u524d\u897f\u91cc\u5c14\u548c\u4e2d\u6b27\u5355\u5b57\u8282\u7f16\u7801\u7684\u8bb8\u591a\u8f6c\u6362\u662f\u901a\u8fc7\u8f6c\u6362\u5230\u76f8\u5173\u7684 <code>MULE_INTERNAL</code> \u7f16\u7801\u65b9\u6848\u518d\u8f6c\u5230\u76ee\u6807\u7f16\u7801\u5b8c\u6210\u7684\u3002\u9664\u4e86\u4f4e\u6548\u4e4b\u5916\uff0c\u8fd9\u610f\u5473\u7740\u5f53\u8f6c\u6362\u9047\u5230\u4e0d\u53ef\u7ffb\u8bd1\u5b57\u7b26\u65f6\uff0c\u9519\u8bef\u6d88\u606f\u4f1a\u4ee4\u4eba\u56f0\u60d1\u5730\u62b1\u6028\u65e0\u6cd5\u8f6c\u6362\u5230\u6216\u4ece <code>MULE_INTERNAL</code>\uff0c\u800c\u4e0d\u662f\u7528\u6237\u53ef\u89c1\u7684\u7f16\u7801\u3002</p>", "text": "\u907f\u514d\u901a\u8fc7 MULE_INTERNAL \u7f16\u7801\u8fdb\u884c\u7f16\u7801\u8f6c\u6362\uff08Tom Lane\uff09 \u4ee5\u524d\u897f\u91cc\u5c14\u548c\u4e2d\u6b27\u5355\u5b57\u8282\u7f16\u7801\u7684\u8bb8\u591a\u8f6c\u6362\u662f\u901a\u8fc7\u8f6c\u6362\u5230\u76f8\u5173\u7684 MULE_INTERNAL \u7f16\u7801\u65b9\u6848\u518d\u8f6c\u5230\u76ee\u6807\u7f16\u7801\u5b8c\u6210\u7684\u3002\u9664\u4e86\u4f4e\u6548\u4e4b\u5916\uff0c\u8fd9\u610f\u5473\u7740\u5f53\u8f6c\u6362\u9047\u5230\u4e0d\u53ef\u7ffb\u8bd1\u5b57\u7b26\u65f6\uff0c\u9519\u8bef\u6d88\u606f\u4f1a\u4ee4\u4eba\u56f0\u60d1\u5730\u62b1\u6028\u65e0\u6cd5\u8f6c\u6362\u5230\u6216\u4ece MULE_INTERNAL\uff0c\u800c\u4e0d\u662f\u7528\u6237\u53ef\u89c1\u7684\u7f16\u7801\u3002", "title": "\u907f\u514d\u901a\u8fc7 MULE_INTERNAL \u7f16\u7801\u8fdb\u884c\u7f16\u7801\u8f6c\u6362", "commits": [], "section": "\u67e5\u8be2", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.5", "source_hash": "a3f5b889ead5c8b5c6e769fd39186525bbb5f8c72f7ada01cfc1ed9201b3f935", "section_path": ["\u67e5\u8be2"], "commit_groups": [["8d32717b6"]], "identity_text": "Avoid doing encoding conversions by converting through the MULE_INTERNAL encoding (Tom Lane) Previously, many conversions for Cyrillic and Central European single-byte encodings were done by converting to a related MULE_INTERNAL coding scheme and then to the destination encoding. Aside from being inefficient, this meant that when the conversion encountered an untranslatable character, the error message would confusingly complain about failure to convert to or from MULE_INTERNAL, rather than the user-visible encoding.", "commit_aliases": ["8d32717b6"], "source_commits": ["8d32717b6"], "source_entry_id": "9.6.0/changes/076", "db_id": "19668e113722ba9a46438667f860abdd", "patch_ids": ["f416fc390626497a5afe4caee011d944"], "statement_hash": "64a56f5a7138a6f01d754c600bab6637e236f240a69e192c0a56bf9e5d95b9ea", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-3be9f88c41e8b145", "migration": false}, {"id": "9.6.0-87d2369ddc8f292c", "cves": [], "html": "<p>\u53ea\u6709\u5f53\u5916\u90e8\u8868\u5c06\u5728\u540c\u4e00\u89d2\u8272 ID \u4e0b\u88ab\u8bbf\u95ee\u65f6\u624d\u8003\u8651\u8fdc\u7a0b\u6267\u884c\u5916\u90e8\u8868\u7684\u8fde\u63a5\uff08Shigeru Hanada\u3001Ashutosh Bapat\u3001Etsuro Fujita\uff09</p>\n<p>\u4ee5\u524d\u5916\u90e8\u8fde\u63a5\u4e0b\u63a8\u57fa\u7840\u8bbe\u65bd\u628a\u5b89\u5168\u95ee\u9898\u5b8c\u5168\u7559\u7ed9\u5404\u4e2a\u5916\u90e8\u6570\u636e\u5305\u88c5\u5668\uff0c\u4f46\u8fd9\u4f7f <acronym>FDW</acronym> \u592a\u5bb9\u6613\u65e0\u610f\u4e2d\u521b\u5efa\u5fae\u5999\u7684\u5b89\u5168\u6f0f\u6d1e\u3002\u56e0\u6b64\u6539\u4e3a\u6838\u5fc3\u4ee3\u7801\u51b3\u5b9a\u54ea\u4e2a\u89d2\u8272 ID \u5c06\u8bbf\u95ee\u6bcf\u4e2a\u8868\uff0c\u9664\u975e\u6240\u6709\u76f8\u5173\u5173\u7cfb\u7684\u89d2\u8272\u76f8\u540c\uff0c\u5426\u5219\u4e0d\u5c1d\u8bd5\u8fde\u63a5\u4e0b\u63a8\u3002</p>", "text": "\u53ea\u6709\u5f53\u5916\u90e8\u8868\u5c06\u5728\u540c\u4e00\u89d2\u8272 ID \u4e0b\u88ab\u8bbf\u95ee\u65f6\u624d\u8003\u8651\u8fdc\u7a0b\u6267\u884c\u5916\u90e8\u8868\u7684\u8fde\u63a5\uff08Shigeru Hanada\u3001Ashutosh Bapat\u3001Etsuro Fujita\uff09 \u4ee5\u524d\u5916\u90e8\u8fde\u63a5\u4e0b\u63a8\u57fa\u7840\u8bbe\u65bd\u628a\u5b89\u5168\u95ee\u9898\u5b8c\u5168\u7559\u7ed9\u5404\u4e2a\u5916\u90e8\u6570\u636e\u5305\u88c5\u5668\uff0c\u4f46\u8fd9\u4f7f FDW \u592a\u5bb9\u6613\u65e0\u610f\u4e2d\u521b\u5efa\u5fae\u5999\u7684\u5b89\u5168\u6f0f\u6d1e\u3002\u56e0\u6b64\u6539\u4e3a\u6838\u5fc3\u4ee3\u7801\u51b3\u5b9a\u54ea\u4e2a\u89d2\u8272 ID \u5c06\u8bbf\u95ee\u6bcf\u4e2a\u8868\uff0c\u9664\u975e\u6240\u6709\u76f8\u5173\u5173\u7cfb\u7684\u89d2\u8272\u76f8\u540c\uff0c\u5426\u5219\u4e0d\u5c1d\u8bd5\u8fde\u63a5\u4e0b\u63a8\u3002", "title": "\u53ea\u6709\u5f53\u5916\u90e8\u8868\u5c06\u5728\u540c\u4e00\u89d2\u8272 ID \u4e0b\u88ab\u8bbf\u95ee\u65f6\u624d\u8003\u8651\u8fdc\u7a0b\u6267\u884c\u5916\u90e8\u8868\u7684\u8fde\u63a5", "commits": [], "section": "\u67e5\u8be2", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.5", "source_hash": "cf878875c1ad9d9258e47e26461ff861b1aa633fe975a7d3936df4fc8de12eb1", "section_path": ["\u67e5\u8be2"], "commit_groups": [["45639a052"], ["fbe5a3fb7"]], "identity_text": "Consider performing joins of foreign tables remotely only when the tables will be accessed under the same role ID (Shigeru Hanada, Ashutosh Bapat, Etsuro Fujita) Previously, the foreign join pushdown infrastructure left the question of security entirely up to individual foreign data wrappers, but that made it too easy for an FDW to inadvertently create subtle security holes. So, make it the core code's job to determine which role ID will access each table, and do not attempt join pushdown unless the role is the same for all relevant relations.", "commit_aliases": ["45639a052", "fbe5a3fb7"], "source_commits": ["45639a052", "fbe5a3fb7"], "source_entry_id": "9.6.0/changes/077", "db_id": "78a65fda3f2b9460cd3560a18d56051a", "patch_ids": ["079083e00e1329165e46a57d681d6bbd", "2cf53aaabedb900e0d3bb404d29f5954"], "statement_hash": "40d335d922fae9e308cec4ca037964364d73ceb3061c5386258292a59ba29389", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-87d2369ddc8f292c", "migration": false}, {"id": "9.6.0-295104f7939af8ff", "cves": [], "html": "<p>\u5141\u8bb8 <code>COPY</code> \u590d\u5236 <code>INSERT</code>/<code>UPDATE</code>/<code>DELETE</code> ... <code>RETURNING</code> \u67e5\u8be2\u7684\u8f93\u51fa\uff08Marko Tiikkaja\uff09</p>\n<p>\u4ee5\u524d\u5fc5\u987b\u7f16\u5199\u4e2d\u95f4 <acronym>CTE</acronym> \u624d\u80fd\u5f97\u5230\u8fd9\u4e2a\u7ed3\u679c\u3002</p>", "text": "\u5141\u8bb8 COPY \u590d\u5236 INSERT/UPDATE/DELETE ... RETURNING \u67e5\u8be2\u7684\u8f93\u51fa\uff08Marko Tiikkaja\uff09 \u4ee5\u524d\u5fc5\u987b\u7f16\u5199\u4e2d\u95f4 CTE \u624d\u80fd\u5f97\u5230\u8fd9\u4e2a\u7ed3\u679c\u3002", "title": "\u5141\u8bb8 COPY \u590d\u5236 INSERT/UPDATE/DELETE ... RETURNING \u67e5\u8be2\u7684\u8f93\u51fa", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "4479a53cb5e8a62815dfda56c70cc1a30b31e90171b270256474e3ca6c0a6b1c", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["92e38182d"]], "identity_text": "Allow COPY to copy the output of an INSERT/UPDATE/DELETE ... RETURNING query (Marko Tiikkaja) Previously, an intermediate CTE had to be written to get this result.", "commit_aliases": ["92e38182d"], "source_commits": ["92e38182d"], "source_entry_id": "9.6.0/changes/078", "db_id": "2467cb6225d24dc1463f9c028e4a4b70", "patch_ids": ["1b161fa8179097d8009f5986bc59daba"], "statement_hash": "2a04e6d8dd0d85dae1105ee82c395d944d2731d0e95c9b5f6f1cd9c4297281f5", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-295104f7939af8ff", "migration": false}, {"id": "9.6.0-6457d45a0491131f", "cves": [], "html": "<p>\u5f15\u5165 <code>ALTER <em><code>object</code></em> DEPENDS ON EXTENSION</code>\uff08Abhijit Menon-Sen\uff09</p>\n<p>\u6b64\u547d\u4ee4\u5141\u8bb8\u628a\u6570\u636e\u5e93\u5bf9\u8c61\u6807\u8bb0\u4e3a\u4f9d\u8d56\u4e8e\u67d0\u4e2a\u6269\u5c55\uff0c\u4f7f\u5b83\u5728\u6269\u5c55\u88ab\u5220\u9664\u65f6\u81ea\u52a8\u5220\u9664\uff08\u4e0d\u9700\u8981 <code>CASCADE</code>\uff09\u3002\u4f46\u8be5\u5bf9\u8c61\u4e0d\u662f\u6269\u5c55\u7684\u4e00\u90e8\u5206\uff0c\u56e0\u6b64 <span>pg_dump</span> \u4f1a\u5355\u72ec\u8f6c\u50a8\u5b83\u3002</p>", "text": "\u5f15\u5165 ALTER object DEPENDS ON EXTENSION\uff08Abhijit Menon-Sen\uff09 \u6b64\u547d\u4ee4\u5141\u8bb8\u628a\u6570\u636e\u5e93\u5bf9\u8c61\u6807\u8bb0\u4e3a\u4f9d\u8d56\u4e8e\u67d0\u4e2a\u6269\u5c55\uff0c\u4f7f\u5b83\u5728\u6269\u5c55\u88ab\u5220\u9664\u65f6\u81ea\u52a8\u5220\u9664\uff08\u4e0d\u9700\u8981 CASCADE\uff09\u3002\u4f46\u8be5\u5bf9\u8c61\u4e0d\u662f\u6269\u5c55\u7684\u4e00\u90e8\u5206\uff0c\u56e0\u6b64 pg_dump \u4f1a\u5355\u72ec\u8f6c\u50a8\u5b83\u3002", "title": "\u5f15\u5165 ALTER object DEPENDS ON EXTENSION", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "60422c6726d2857482c86119617a2dce86af8b6581ac466452f1174548b9af10", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["f2fcad27d"]], "identity_text": "Introduce ALTER object DEPENDS ON EXTENSION (Abhijit Menon-Sen) This command allows a database object to be marked as depending on an extension, so that it will be dropped automatically if the extension is dropped (without needing CASCADE). However, the object is not part of the extension, and thus will be dumped separately by pg_dump.", "commit_aliases": ["f2fcad27d"], "source_commits": ["f2fcad27d"], "source_entry_id": "9.6.0/changes/079", "db_id": "8a1ed64612f2b6cc732de2dd111dcbbc", "patch_ids": ["497d171ce12000455e940c862bda97b4"], "statement_hash": "c0c32a4bf64ee28064c1d03b6552fd256702fe814075d9eb42bc3613a1efd6e4", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-6457d45a0491131f", "migration": false}, {"id": "9.6.0-b535b3cedaef98fb", "cves": [], "html": "<p>\u4f7f <code>ALTER <em><code>object</code></em> SET SCHEMA</code> \u5728\u5bf9\u8c61\u5df2\u4f4d\u4e8e\u8bf7\u6c42\u7684\u6a21\u5f0f\u4e2d\u65f6\u4e0d\u505a\u4efb\u4f55\u4e8b\uff0c\u800c\u4e0d\u662f\u50cf\u5386\u53f2\u4e0a\u5bf9\u5927\u591a\u6570\u5bf9\u8c61\u7c7b\u578b\u90a3\u6837\u629b\u51fa\u9519\u8bef\uff08Marti Raudsepp\uff09</p>", "text": "\u4f7f ALTER object SET SCHEMA \u5728\u5bf9\u8c61\u5df2\u4f4d\u4e8e\u8bf7\u6c42\u7684\u6a21\u5f0f\u4e2d\u65f6\u4e0d\u505a\u4efb\u4f55\u4e8b\uff0c\u800c\u4e0d\u662f\u50cf\u5386\u53f2\u4e0a\u5bf9\u5927\u591a\u6570\u5bf9\u8c61\u7c7b\u578b\u90a3\u6837\u629b\u51fa\u9519\u8bef\uff08Marti Raudsepp\uff09", "title": "\u4f7f ALTER object SET SCHEMA \u5728\u5bf9\u8c61\u5df2\u4f4d\u4e8e\u8bf7\u6c42\u7684\u6a21\u5f0f\u4e2d\u65f6\u4e0d\u505a\u4efb\u4f55\u4e8b\uff0c\u800c\u4e0d\u662f\u50cf\u5386\u53f2\u4e0a\u5bf9\u5927\u591a\u6570\u5bf9\u8c61\u7c7b\u578b\u90a3\u6837\u629b\u51fa\u9519\u8bef", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "360d7954023a8e537edf2d4b1fa76a15e0ad69ca514d73c10c8a2b32f56f1b24", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["bc4996e61"]], "identity_text": "Make ALTER object SET SCHEMA do nothing when the object is already in the requested schema, rather than throwing an error as it historically has for most object types (Marti Raudsepp)", "commit_aliases": ["bc4996e61"], "source_commits": ["bc4996e61"], "source_entry_id": "9.6.0/changes/080", "db_id": "f269e38fb279400ecd637f57e580c1d8", "patch_ids": ["9dcc868403453c63ab13f132cd92d52c"], "statement_hash": "005d6aa5b309a475ba4a6e6e80097eb925845033f94986c40b153abf32489eb3", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-b535b3cedaef98fb", "migration": false}, {"id": "9.6.0-38b15fc673a86719", "cves": [], "html": "<p>\u4e3a <code>ALTER OPERATOR</code> \u6dfb\u52a0\u9009\u9879\u4ee5\u5141\u8bb8\u66f4\u6539\u4e0e\u73b0\u6709\u64cd\u4f5c\u7b26\u5173\u8054\u7684\u9009\u62e9\u7387\u51fd\u6570\uff08Yury Zhuravlev\uff09</p>", "text": "\u4e3a ALTER OPERATOR \u6dfb\u52a0\u9009\u9879\u4ee5\u5141\u8bb8\u66f4\u6539\u4e0e\u73b0\u6709\u64cd\u4f5c\u7b26\u5173\u8054\u7684\u9009\u62e9\u7387\u51fd\u6570\uff08Yury Zhuravlev\uff09", "title": "\u4e3a ALTER OPERATOR \u6dfb\u52a0\u9009\u9879\u4ee5\u5141\u8bb8\u66f4\u6539\u4e0e\u73b0\u6709\u64cd\u4f5c\u7b26\u5173\u8054\u7684\u9009\u62e9\u7387\u51fd\u6570", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "3fc3fa36d927b33c10440d93e5be11e4e34ae1763c83428438e3faf5e8cf73d4", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["0dab5ef39"], ["321eed5f0"]], "identity_text": "Add options to ALTER OPERATOR to allow changing the selectivity functions associated with an existing operator (Yury Zhuravlev)", "commit_aliases": ["0dab5ef39", "321eed5f0"], "source_commits": ["0dab5ef39", "321eed5f0"], "source_entry_id": "9.6.0/changes/081", "db_id": "2a88d585127ac85bf518c01636d17599", "patch_ids": ["3bb7091e8ecaadbcfa06ced2103cbcf0", "f01be0c1cf40c506cd10e7332d5f0f67"], "statement_hash": "ad9493c9a6536e5911ddfd3fd65321bf81a290d2cede5b94f0c3f9575b83bc8f", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-38b15fc673a86719", "migration": false}, {"id": "9.6.0-f05301bb22fbe971", "cves": [], "html": "<p>\u4e3a <code>ALTER TABLE ADD COLUMN</code> \u6dfb\u52a0 <code>IF NOT EXISTS</code> \u9009\u9879\uff08Fabr\u00edzio de Royes Mello\uff09</p>", "text": "\u4e3a ALTER TABLE ADD COLUMN \u6dfb\u52a0 IF NOT EXISTS \u9009\u9879\uff08Fabr\u00edzio de Royes Mello\uff09", "title": "\u4e3a ALTER TABLE ADD COLUMN \u6dfb\u52a0 IF NOT EXISTS \u9009\u9879", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "567e32620905d00e36d4999a98e070202c979956c2ce4dc6eb99bd01f3503698", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["2cd40adb8"]], "identity_text": "Add an IF NOT EXISTS option to ALTER TABLE ADD COLUMN (Fabr\u00edzio de Royes Mello)", "commit_aliases": ["2cd40adb8"], "source_commits": ["2cd40adb8"], "source_entry_id": "9.6.0/changes/082", "db_id": "4edec80867ea1923fe30aefeeb515b30", "patch_ids": ["81b743b942679a8874fec4ea8c40b4da"], "statement_hash": "ecba9e7e32678c3ff029cfcd509c128d2f8d7c78c52c56b84bb79bde6b6133f6", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-f05301bb22fbe971", "migration": false}, {"id": "9.6.0-8e3a71521080397c", "cves": [], "html": "<p>\u964d\u4f4e <code>ALTER TABLE</code> \u5728\u8bbe\u7f6e fillfactor \u548c\u81ea\u52a8\u6e05\u7406\u76f8\u5173\u5173\u7cfb\u9009\u9879\u65f6\u6240\u9700\u7684\u9501\u5f3a\u5ea6\uff08Fabr\u00edzio de Royes Mello\u3001Simon Riggs\uff09</p>", "text": "\u964d\u4f4e ALTER TABLE \u5728\u8bbe\u7f6e fillfactor \u548c\u81ea\u52a8\u6e05\u7406\u76f8\u5173\u5173\u7cfb\u9009\u9879\u65f6\u6240\u9700\u7684\u9501\u5f3a\u5ea6\uff08Fabr\u00edzio de Royes Mello\u3001Simon Riggs\uff09", "title": "\u964d\u4f4e ALTER TABLE \u5728\u8bbe\u7f6e fillfactor \u548c\u81ea\u52a8\u6e05\u7406\u76f8\u5173\u5173\u7cfb\u9009\u9879\u65f6\u6240\u9700\u7684\u9501\u5f3a\u5ea6", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "03cb1b6b7ccf1790d2842005637fa7df68816009c304754c5b8636a94d339baf", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["47167b790"], ["fcb4bfddb"]], "identity_text": "Reduce the lock strength needed by ALTER TABLE when setting fillfactor and autovacuum-related relation options (Fabr\u00edzio de Royes Mello, Simon Riggs)", "commit_aliases": ["47167b790", "fcb4bfddb"], "source_commits": ["47167b790", "fcb4bfddb"], "source_entry_id": "9.6.0/changes/083", "db_id": "f143c44391689e2df86af7c45bb1c669", "patch_ids": ["af28725b605733e5cc7f975d10afb213", "ee743db2afcc3012b2e8b86443b61d43"], "statement_hash": "b571deb72b264d6f50e2444ec008aaba8027e636cf7afc38c6bdd58f31582b1d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-8e3a71521080397c", "migration": false}, {"id": "9.6.0-fc68617df0321538", "cves": [], "html": "<p>\u5f15\u5165 <a href=\"/docs/9.6/sql-create-access-method.html\" title=\"CREATE ACCESS METHOD\"><code>CREATE ACCESS METHOD</code></a> \u4ee5\u5141\u8bb8\u6269\u5c55\u521b\u5efa\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5\uff08Alexander Korotkov\u3001Petr Jel\u00ednek\uff09</p>", "text": "\u5f15\u5165 CREATE ACCESS METHOD \u4ee5\u5141\u8bb8\u6269\u5c55\u521b\u5efa\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5\uff08Alexander Korotkov\u3001Petr Jel\u00ednek\uff09", "title": "\u5f15\u5165 CREATE ACCESS METHOD \u4ee5\u5141\u8bb8\u6269\u5c55\u521b\u5efa\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "d9ad3e57061ae6c908b37ed08649d551d68560b895e55d047b746020cc62b7fe", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["473b93287"]], "identity_text": "Introduce CREATE ACCESS METHOD to allow extensions to create index access methods (Alexander Korotkov, Petr Jel\u00ednek)", "commit_aliases": ["473b93287"], "source_commits": ["473b93287"], "source_entry_id": "9.6.0/changes/084", "db_id": "94f1e93bee5cfa5225aa181ca3509b73", "patch_ids": ["5ba934e7d9c6fc07ef6c3ba71c7bd38b"], "statement_hash": "85b0d105f9f5303220974aa2e7e608e92aeabfffe14d7561546386e2c0610ef0", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-fc68617df0321538", "migration": false}, {"id": "9.6.0-ea028a44c773e557", "cves": [], "html": "<p>\u4e3a <code>CREATE EXTENSION</code> \u6dfb\u52a0 <code>CASCADE</code> \u9009\u9879\u4ee5\u81ea\u52a8\u521b\u5efa\u6240\u8bf7\u6c42\u6269\u5c55\u4f9d\u8d56\u7684\u4efb\u4f55\u6269\u5c55\uff08Petr Jel\u00ednek\uff09</p>", "text": "\u4e3a CREATE EXTENSION \u6dfb\u52a0 CASCADE \u9009\u9879\u4ee5\u81ea\u52a8\u521b\u5efa\u6240\u8bf7\u6c42\u6269\u5c55\u4f9d\u8d56\u7684\u4efb\u4f55\u6269\u5c55\uff08Petr Jel\u00ednek\uff09", "title": "\u4e3a CREATE EXTENSION \u6dfb\u52a0 CASCADE \u9009\u9879\u4ee5\u81ea\u52a8\u521b\u5efa\u6240\u8bf7\u6c42\u6269\u5c55\u4f9d\u8d56\u7684\u4efb\u4f55\u6269\u5c55", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "1d906e7a671af3b362df5556f6a7cf56a76cab4c874aa18e22f0a783522b4dbe", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["b67aaf21e"]], "identity_text": "Add a CASCADE option to CREATE EXTENSION to automatically create any extensions the requested one depends on (Petr Jel\u00ednek)", "commit_aliases": ["b67aaf21e"], "source_commits": ["b67aaf21e"], "source_entry_id": "9.6.0/changes/085", "db_id": "bd9ddc104c72c9de7d6e2b9eae38a940", "patch_ids": ["6a9914cb4872d9ef2700d5947b4c7b70"], "statement_hash": "09faa16fc30aa454ac84ca55fdd2f821e61fa3f64965e009cebdacb0c97dfeff", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-ea028a44c773e557", "migration": false}, {"id": "9.6.0-79aaeccb103dfad5", "cves": [], "html": "<p>\u4f7f <code>CREATE TABLE ... LIKE</code> \u5728\u4efb\u4f55\u6e90\u8868\u6709 <code>OID</code> \u5217\u65f6\u5305\u542b OID \u5217\uff08Bruce Momjian\uff09</p>", "text": "\u4f7f CREATE TABLE ... LIKE \u5728\u4efb\u4f55\u6e90\u8868\u6709 OID \u5217\u65f6\u5305\u542b OID \u5217\uff08Bruce Momjian\uff09", "title": "\u4f7f CREATE TABLE ... LIKE \u5728\u4efb\u4f55\u6e90\u8868\u6709 OID \u5217\u65f6\u5305\u542b OID \u5217", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "c56b247b17aea9e7d52915ae349898de9f3f8e1cdd7d43d9ea4abb9551e29482", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["b943f502b"]], "identity_text": "Make CREATE TABLE ... LIKE include an OID column if any source table has one (Bruce Momjian)", "commit_aliases": ["b943f502b"], "source_commits": ["b943f502b"], "source_entry_id": "9.6.0/changes/086", "db_id": "2ec17ca3c61d492f26fa3658cae85a88", "patch_ids": ["c5f57b70bbe2867373e7475fe82bd6b8"], "statement_hash": "9a0d6228c6d5e0bedd3e6cde93849967ecf7aaaec69ce94aa39734f068de910f", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-79aaeccb103dfad5", "migration": false}, {"id": "9.6.0-a58b0b34f50ff4b8", "cves": [], "html": "<p>\u5982\u679c <code>CHECK</code> \u7ea6\u675f\u5728\u8868\u521b\u5efa\u547d\u4ee4\u4e2d\u88ab\u58f0\u660e\u4e3a <code>NOT VALID</code>\uff0c\u81ea\u52a8\u628a\u5b83\u6807\u8bb0\u4e3a\u6709\u6548\uff08Amit Langote\u3001Amul Sul\uff09</p>\n<p>\u8fd9\u662f\u5b89\u5168\u7684\uff0c\u56e0\u4e3a\u8868\u6ca1\u6709\u73b0\u6709\u884c\u3002\u8fd9\u4e0e <code>FOREIGN KEY</code> \u7ea6\u675f\u7684\u957f\u671f\u884c\u4e3a\u4e00\u81f4\u3002</p>", "text": "\u5982\u679c CHECK \u7ea6\u675f\u5728\u8868\u521b\u5efa\u547d\u4ee4\u4e2d\u88ab\u58f0\u660e\u4e3a NOT VALID\uff0c\u81ea\u52a8\u628a\u5b83\u6807\u8bb0\u4e3a\u6709\u6548\uff08Amit Langote\u3001Amul Sul\uff09 \u8fd9\u662f\u5b89\u5168\u7684\uff0c\u56e0\u4e3a\u8868\u6ca1\u6709\u73b0\u6709\u884c\u3002\u8fd9\u4e0e FOREIGN KEY \u7ea6\u675f\u7684\u957f\u671f\u884c\u4e3a\u4e00\u81f4\u3002", "title": "\u5982\u679c CHECK \u7ea6\u675f\u5728\u8868\u521b\u5efa\u547d\u4ee4\u4e2d\u88ab\u58f0\u660e\u4e3a NOT VALID\uff0c\u81ea\u52a8\u628a\u5b83\u6807\u8bb0\u4e3a\u6709\u6548", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "3329373217749ab87420c942d4222ce9639805aa03849ce8d7f1bcfa3b2803d7", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["f27a6b15e"]], "identity_text": "If a CHECK constraint is declared NOT VALID in a table creation command, automatically mark it as valid (Amit Langote, Amul Sul) This is safe because the table has no existing rows. This matches the longstanding behavior of FOREIGN KEY constraints.", "commit_aliases": ["f27a6b15e"], "source_commits": ["f27a6b15e"], "source_entry_id": "9.6.0/changes/087", "db_id": "07abb13c76b6726d017351127274bc45", "patch_ids": ["6444ea0e0c5eb115e78f63b754a4cc37"], "statement_hash": "c54a6546b85aaab62bf55ec5a11b4d0d474e1178f872ed7de9de2106480ca51d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-a58b0b34f50ff4b8", "migration": false}, {"id": "9.6.0-28270299529a96cf", "cves": [], "html": "<p>\u4fee\u590d <code>DROP OPERATOR</code> \u6e05\u9664\u6307\u5411\u88ab\u5220\u9664\u64cd\u4f5c\u7b26\u7684 <code>pg_operator</code>.<code>oprcom</code> \u548c <code>pg_operator</code>.<code>oprnegate</code> \u94fe\u63a5\uff08Roma Sokolov\uff09</p>\n<p>\u4ee5\u524d\u8fd9\u79cd\u94fe\u63a5\u4fdd\u6301\u539f\u6837\uff0c\u5728\u88ab\u5220\u9664\u64cd\u4f5c\u7b26\u7684 <code>OID</code> \u88ab\u590d\u7528\u4e8e\u53e6\u4e00\u4e2a\u64cd\u4f5c\u7b26\u8fd9\u79cd\u4e0d\u592a\u53ef\u80fd\u7684\u4e8b\u4ef6\u4e2d\u53ef\u80fd\u9020\u6210\u95ee\u9898\u3002</p>", "text": "\u4fee\u590d DROP OPERATOR \u6e05\u9664\u6307\u5411\u88ab\u5220\u9664\u64cd\u4f5c\u7b26\u7684 pg_operator.oprcom \u548c pg_operator.oprnegate \u94fe\u63a5\uff08Roma Sokolov\uff09 \u4ee5\u524d\u8fd9\u79cd\u94fe\u63a5\u4fdd\u6301\u539f\u6837\uff0c\u5728\u88ab\u5220\u9664\u64cd\u4f5c\u7b26\u7684 OID \u88ab\u590d\u7528\u4e8e\u53e6\u4e00\u4e2a\u64cd\u4f5c\u7b26\u8fd9\u79cd\u4e0d\u592a\u53ef\u80fd\u7684\u4e8b\u4ef6\u4e2d\u53ef\u80fd\u9020\u6210\u95ee\u9898\u3002", "title": "\u4fee\u590d DROP OPERATOR \u6e05\u9664\u6307\u5411\u88ab\u5220\u9664\u64cd\u4f5c\u7b26\u7684 pg_operator.oprcom \u548c pg_operator.oprnegate \u94fe\u63a5", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "bugfix", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "037c29b9b6bad2c41e4cc92426f98be1f3ab74d0ef6c99fb1afcf951afc5a4fa", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["c94959d41"]], "identity_text": "Fix DROP OPERATOR to clear pg_operator.oprcom and pg_operator.oprnegate links to the dropped operator (Roma Sokolov) Formerly such links were left as-is, which could pose a problem in the somewhat unlikely event that the dropped operator's OID was reused for another operator.", "commit_aliases": ["c94959d41"], "source_commits": ["c94959d41"], "source_entry_id": "9.6.0/changes/088", "db_id": "005c6ea8eae2eec4da6968038a0edade", "patch_ids": ["a8d14c20d8795de5010524bdef2c93e5"], "statement_hash": "94c08fd36a98e98711267f4961adf2fc78e326eb1775fb4d8141acc3a3aed6e6", "relations": [], "category_label": "BUG \u4fee\u590d", "url": "/docs/compare/?release=9.6.0#9.6.0-28270299529a96cf", "migration": false}, {"id": "9.6.0-1f5580eceb83e743", "cves": [], "html": "<p>\u4e0d\u5728 <code>EXPLAIN</code> \u8f93\u51fa\u4e2d\u4e24\u6b21\u663e\u793a\u540c\u4e00\u5b50\u8ba1\u5212\uff08Tom Lane\uff09</p>\n<p>\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff08\u901a\u5e38\u6d89\u53ca\u7d22\u5f15\u6761\u4ef6\u4e2d\u7684 SubPlan \u8282\u70b9\uff09\uff0c<code>EXPLAIN</code> \u4f1a\u4e24\u6b21\u6253\u5370\u540c\u4e00\u5b50\u8ba1\u5212\u7684\u6570\u636e\u3002</p>", "text": "\u4e0d\u5728 EXPLAIN \u8f93\u51fa\u4e2d\u4e24\u6b21\u663e\u793a\u540c\u4e00\u5b50\u8ba1\u5212\uff08Tom Lane\uff09 \u67d0\u4e9b\u60c5\u51b5\u4e0b\uff08\u901a\u5e38\u6d89\u53ca\u7d22\u5f15\u6761\u4ef6\u4e2d\u7684 SubPlan \u8282\u70b9\uff09\uff0cEXPLAIN \u4f1a\u4e24\u6b21\u6253\u5370\u540c\u4e00\u5b50\u8ba1\u5212\u7684\u6570\u636e\u3002", "title": "\u4e0d\u5728 EXPLAIN \u8f93\u51fa\u4e2d\u4e24\u6b21\u663e\u793a\u540c\u4e00\u5b50\u8ba1\u5212", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "34904b902d34abd16124b454ac528391206a0f183eafff974dc131a45d5e95f7", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["4d042999f"]], "identity_text": "Do not show the same subplan twice in EXPLAIN output (Tom Lane) In certain cases, typically involving SubPlan nodes in index conditions, EXPLAIN would print data for the same subplan twice.", "commit_aliases": ["4d042999f"], "source_commits": ["4d042999f"], "source_entry_id": "9.6.0/changes/089", "db_id": "10d9b65e130e3e9f10669a5cfe087417", "patch_ids": ["500eaa6181c489fccc9f580f9683118f"], "statement_hash": "f90cf7a82d0b37cad99525c0c08b2a247197e534e9939cccb8ea49158d276903", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-1f5580eceb83e743", "migration": false}, {"id": "9.6.0-61e3d9b20465276b", "cves": [], "html": "<p>\u7981\u6b62\u5728\u7cfb\u7edf\u5217\u4e0a\u521b\u5efa\u7d22\u5f15\uff0c<code>OID</code> \u5217\u9664\u5916\uff08David Rowley\uff09</p>\n<p>\u8fd9\u79cd\u7d22\u5f15\u4ece\u672a\u88ab\u89c6\u4e3a\u53d7\u652f\u6301\uff0c\u800c\u4e14\u5f88\u53ef\u80fd\u884c\u4e3a\u4e0d\u5f53\uff0c\u56e0\u4e3a\u7cfb\u7edf\u53ef\u80fd\u5728\u4e0d\u66f4\u65b0\u7d22\u5f15\u7684\u60c5\u51b5\u4e0b\u66f4\u6539\u5143\u7ec4\u7684\u7cfb\u7edf\u5217\u5b57\u6bb5\u3002\u4f46\u4ee5\u524d\u6ca1\u6709\u9632\u6b62\u521b\u5efa\u5b83\u4eec\u7684\u9519\u8bef\u68c0\u67e5\u3002</p>", "text": "\u7981\u6b62\u5728\u7cfb\u7edf\u5217\u4e0a\u521b\u5efa\u7d22\u5f15\uff0cOID \u5217\u9664\u5916\uff08David Rowley\uff09 \u8fd9\u79cd\u7d22\u5f15\u4ece\u672a\u88ab\u89c6\u4e3a\u53d7\u652f\u6301\uff0c\u800c\u4e14\u5f88\u53ef\u80fd\u884c\u4e3a\u4e0d\u5f53\uff0c\u56e0\u4e3a\u7cfb\u7edf\u53ef\u80fd\u5728\u4e0d\u66f4\u65b0\u7d22\u5f15\u7684\u60c5\u51b5\u4e0b\u66f4\u6539\u5143\u7ec4\u7684\u7cfb\u7edf\u5217\u5b57\u6bb5\u3002\u4f46\u4ee5\u524d\u6ca1\u6709\u9632\u6b62\u521b\u5efa\u5b83\u4eec\u7684\u9519\u8bef\u68c0\u67e5\u3002", "title": "\u7981\u6b62\u5728\u7cfb\u7edf\u5217\u4e0a\u521b\u5efa\u7d22\u5f15\uff0cOID \u5217\u9664\u5916", "commits": [], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.6", "source_hash": "3d099b2c95203db8503099276c3ba969eecded4b6cdbb6e7ec0d227c06641e05", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["c34df8a00"]], "identity_text": "Disallow creation of indexes on system columns, except for OID columns (David Rowley) Such indexes were never considered supported, and would very possibly misbehave since the system might change the system-column fields of a tuple without updating indexes. However, previously there were no error checks to prevent them from being created.", "commit_aliases": ["c34df8a00"], "source_commits": ["c34df8a00"], "source_entry_id": "9.6.0/changes/090", "db_id": "9db9e365b10394c400f1a3c224df566b", "patch_ids": ["c13917cba4577088098173855ae6ae75"], "statement_hash": "897b9e9f04082a81c54de9c7da9dad3c0fa528531d24b611e05dae4c54b57f21", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-61e3d9b20465276b", "migration": false}, {"id": "9.6.0-5850008d4e580938", "cves": [], "html": "<p>\u4f7f\u7528\u6743\u9650\u7cfb\u7edf\u7ba1\u7406\u5bf9\u654f\u611f\u51fd\u6570\u7684\u8bbf\u95ee\uff08Stephen Frost\uff09</p>\n<p>\u4ee5\u524d\u8bb8\u591a\u5b89\u5168\u654f\u611f\u51fd\u6570\u5305\u542b\u786c\u7f16\u7801\u7684\u68c0\u67e5\uff0c\u5728\u88ab\u975e\u8d85\u7ea7\u7528\u6237\u8c03\u7528\u65f6\u4f1a\u629b\u51fa\u9519\u8bef\u3002\u8fd9\u8feb\u4f7f\u4e00\u4e9b\u76f8\u5bf9\u5e73\u5e38\u7684\u4efb\u52a1\u4f7f\u7528\u8d85\u7ea7\u7528\u6237\u89d2\u8272\u3002\u786c\u7f16\u7801\u7684\u9519\u8bef\u68c0\u67e5\u73b0\u5df2\u79fb\u9664\uff0c\u6539\u4e3a\u8ba9 <span>initdb</span> \u64a4\u9500\u8fd9\u4e9b\u51fd\u6570\u4e0a\u7684\u516c\u5171 <code>EXECUTE</code> \u6743\u9650\u3002\u8fd9\u5141\u8bb8\u5b89\u88c5\u9009\u62e9\u628a\u8fd9\u79cd\u51fd\u6570\u7684\u4f7f\u7528\u6743\u6388\u4e88\u4e0d\u9700\u8981\u5168\u90e8\u8d85\u7ea7\u7528\u6237\u6743\u9650\u7684\u53ef\u4fe1\u89d2\u8272\u3002</p>", "text": "\u4f7f\u7528\u6743\u9650\u7cfb\u7edf\u7ba1\u7406\u5bf9\u654f\u611f\u51fd\u6570\u7684\u8bbf\u95ee\uff08Stephen Frost\uff09 \u4ee5\u524d\u8bb8\u591a\u5b89\u5168\u654f\u611f\u51fd\u6570\u5305\u542b\u786c\u7f16\u7801\u7684\u68c0\u67e5\uff0c\u5728\u88ab\u975e\u8d85\u7ea7\u7528\u6237\u8c03\u7528\u65f6\u4f1a\u629b\u51fa\u9519\u8bef\u3002\u8fd9\u8feb\u4f7f\u4e00\u4e9b\u76f8\u5bf9\u5e73\u5e38\u7684\u4efb\u52a1\u4f7f\u7528\u8d85\u7ea7\u7528\u6237\u89d2\u8272\u3002\u786c\u7f16\u7801\u7684\u9519\u8bef\u68c0\u67e5\u73b0\u5df2\u79fb\u9664\uff0c\u6539\u4e3a\u8ba9 initdb \u64a4\u9500\u8fd9\u4e9b\u51fd\u6570\u4e0a\u7684\u516c\u5171 EXECUTE \u6743\u9650\u3002\u8fd9\u5141\u8bb8\u5b89\u88c5\u9009\u62e9\u628a\u8fd9\u79cd\u51fd\u6570\u7684\u4f7f\u7528\u6743\u6388\u4e88\u4e0d\u9700\u8981\u5168\u90e8\u8d85\u7ea7\u7528\u6237\u6743\u9650\u7684\u53ef\u4fe1\u89d2\u8272\u3002", "title": "\u4f7f\u7528\u6743\u9650\u7cfb\u7edf\u7ba1\u7406\u5bf9\u654f\u611f\u51fd\u6570\u7684\u8bbf\u95ee", "commits": [], "section": "\u6743\u9650\u7ba1\u7406", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.7", "source_hash": "b440b337fbb180edf4096a9d8fa428099047e172582a0195533b8763a6e78bd7", "section_path": ["\u6743\u9650\u7ba1\u7406"], "commit_groups": [["1574783b4"]], "identity_text": "Use the privilege system to manage access to sensitive functions (Stephen Frost) Formerly, many security-sensitive functions contained hard-wired checks that would throw an error if they were called by a non-superuser. This forced the use of superuser roles for some relatively pedestrian tasks. The hard-wired error checks are now gone in favor of making initdb revoke the default public EXECUTE privilege on these functions. This allows installations to choose to grant usage of such functions to trusted roles that do not need all superuser privileges.", "commit_aliases": ["1574783b4"], "source_commits": ["1574783b4"], "source_entry_id": "9.6.0/changes/091", "db_id": "b9ad438c4145f62439f3632fce7f1d1e", "patch_ids": ["2769d03cdec3b20644e9f59bd38a05ff"], "statement_hash": "ae519bc37d49e596341b1f56f5fdb4cc4ba120c52864ead2f01fca1926c67025", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-5850008d4e580938", "migration": false}, {"id": "9.6.0-59077ff4f598ea9e", "cves": [], "html": "<p>\u521b\u5efa\u4e00\u4e9b<a href=\"/docs/9.6/default-roles.html\" title=\"21.5.\u00a0\u9ed8\u8ba4\u89d2\u8272\">\u5185\u5efa\u89d2\u8272</a>\uff0c\u53ef\u7528\u4e8e\u6388\u4e88\u5bf9\u4ee5\u524d\u4ec5\u9650\u8d85\u7ea7\u7528\u6237\u7684\u51fd\u6570\u7684\u8bbf\u95ee\uff08Stephen Frost\uff09</p>\n<p>\u5f53\u524d\u552f\u4e00\u8fd9\u79cd\u89d2\u8272\u662f <code>pg_signal_backend</code>\uff0c\u4f46\u9884\u8ba1\u672a\u6765\u4f1a\u6dfb\u52a0\u66f4\u591a\u3002</p>", "text": "\u521b\u5efa\u4e00\u4e9b\u5185\u5efa\u89d2\u8272\uff0c\u53ef\u7528\u4e8e\u6388\u4e88\u5bf9\u4ee5\u524d\u4ec5\u9650\u8d85\u7ea7\u7528\u6237\u7684\u51fd\u6570\u7684\u8bbf\u95ee\uff08Stephen Frost\uff09 \u5f53\u524d\u552f\u4e00\u8fd9\u79cd\u89d2\u8272\u662f pg_signal_backend\uff0c\u4f46\u9884\u8ba1\u672a\u6765\u4f1a\u6dfb\u52a0\u66f4\u591a\u3002", "title": "\u521b\u5efa\u4e00\u4e9b\u5185\u5efa\u89d2\u8272\uff0c\u53ef\u7528\u4e8e\u6388\u4e88\u5bf9\u4ee5\u524d\u4ec5\u9650\u8d85\u7ea7\u7528\u6237\u7684\u51fd\u6570\u7684\u8bbf\u95ee", "commits": [], "section": "\u6743\u9650\u7ba1\u7406", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.7", "source_hash": "2d44be18814e79b3b62ab44170768b78dcabaf545ccd7814f720ef4f0d85a861", "section_path": ["\u6743\u9650\u7ba1\u7406"], "commit_groups": [["7a542700d"]], "identity_text": "Create some built-in roles that can be used to grant access to what were previously superuser-only functions (Stephen Frost) Currently the only such role is pg_signal_backend, but more are expected to be added in future.", "commit_aliases": ["7a542700d"], "source_commits": ["7a542700d"], "source_entry_id": "9.6.0/changes/092", "db_id": "d89dc78e6e7edd80aef53eebb08bc949", "patch_ids": ["2a982e4398522cefe9a137bd959914cd"], "statement_hash": "36f772ee3b2f3773e605de8044ce29e943d4badc9e31e2986707152e0822ddb2", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-59077ff4f598ea9e", "migration": false}, {"id": "9.6.0-3d16a1cda7f7e18f", "cves": [], "html": "<p>\u6539\u8fdb<a href=\"/docs/9.6/textsearch.html\" title=\"\u7b2c\u00a012\u00a0\u7ae0\u00a0\u5168\u6587\u641c\u7d22\">\u5168\u6587\u641c\u7d22</a>\u4ee5\u652f\u6301\u641c\u7d22\u77ed\u8bed\uff0c\u5373\u4ee5\u7279\u5b9a\u987a\u5e8f\u76f8\u90bb\u51fa\u73b0\u6216\u4e4b\u95f4\u6709\u6307\u5b9a\u8ddd\u79bb\u7684\u8bcd\u7d20\uff08Teodor Sigaev\u3001Oleg Bartunov\u3001Dmitry Ivanov\uff09</p>\n<p>\u77ed\u8bed\u641c\u7d22\u67e5\u8be2\u53ef\u4ee5\u5728 <code>tsquery</code> \u8f93\u5165\u4e2d\u7528\u65b0\u64cd\u4f5c\u7b26 <code>&lt;-&gt;</code> \u548c <code>&lt;<em><code>N</code></em>&gt;</code> \u6307\u5b9a\u3002\u524d\u8005\u8868\u793a\u5b83\u524d\u540e\u7684\u8bcd\u7d20\u5fc5\u987b\u4ee5\u8be5\u987a\u5e8f\u76f8\u90bb\u51fa\u73b0\u3002\u540e\u8005\u8868\u793a\u5b83\u4eec\u5fc5\u987b\u6070\u597d\u76f8\u9694 <em><code>N</code></em> \u4e2a\u8bcd\u7d20\u3002</p>", "text": "\u6539\u8fdb\u5168\u6587\u641c\u7d22\u4ee5\u652f\u6301\u641c\u7d22\u77ed\u8bed\uff0c\u5373\u4ee5\u7279\u5b9a\u987a\u5e8f\u76f8\u90bb\u51fa\u73b0\u6216\u4e4b\u95f4\u6709\u6307\u5b9a\u8ddd\u79bb\u7684\u8bcd\u7d20\uff08Teodor Sigaev\u3001Oleg Bartunov\u3001Dmitry Ivanov\uff09 \u77ed\u8bed\u641c\u7d22\u67e5\u8be2\u53ef\u4ee5\u5728 tsquery \u8f93\u5165\u4e2d\u7528\u65b0\u64cd\u4f5c\u7b26 <-> \u548c <N> \u6307\u5b9a\u3002\u524d\u8005\u8868\u793a\u5b83\u524d\u540e\u7684\u8bcd\u7d20\u5fc5\u987b\u4ee5\u8be5\u987a\u5e8f\u76f8\u90bb\u51fa\u73b0\u3002\u540e\u8005\u8868\u793a\u5b83\u4eec\u5fc5\u987b\u6070\u597d\u76f8\u9694 N \u4e2a\u8bcd\u7d20\u3002", "title": "\u6539\u8fdb\u5168\u6587\u641c\u7d22\u4ee5\u652f\u6301\u641c\u7d22\u77ed\u8bed\uff0c\u5373\u4ee5\u7279\u5b9a\u987a\u5e8f\u76f8\u90bb\u51fa\u73b0\u6216\u4e4b\u95f4\u6709\u6307\u5b9a\u8ddd\u79bb\u7684\u8bcd\u7d20", "commits": [], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.8", "source_hash": "5c98635e44681297592e97ef797270cababcd15d82a1af2107754320bb9e5eda", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["028350f61"], ["3dbbd0f02"], ["6734a1cac"], ["bb140506d"]], "identity_text": "Improve full-text search to support searching for phrases, that is, lexemes appearing adjacent to each other in a specific order, or with a specified distance between them (Teodor Sigaev, Oleg Bartunov, Dmitry Ivanov) A phrase-search query can be specified in tsquery input using the new operators <-> and <N>. The former means that the lexemes before and after it must appear adjacent to each other in that order. The latter means they must be exactly N lexemes apart.", "commit_aliases": ["028350f61", "3dbbd0f02", "6734a1cac", "bb140506d"], "source_commits": ["028350f61", "3dbbd0f02", "6734a1cac", "bb140506d"], "source_entry_id": "9.6.0/changes/093", "db_id": "5dab53e6088d28902f6a7c946e779cec", "patch_ids": ["4e9d902372398ff4ad7fab5833b07d54", "9eebd1840877aa7c523cf56bd746c630", "aa19fb572cd2d23589ee0db6089c0ca2", "c93059b2e6fdc28fcddb0b86d52063a2"], "statement_hash": "cb069b72557a73a272ca65f3143e27d41fbf06d45e5edae5fc44d7d60f7950f7", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-3d16a1cda7f7e18f", "migration": false}, {"id": "9.6.0-ab09e4d880780ce3", "cves": [], "html": "<p>\u5141\u8bb8\u5728\u6570\u7ec4\u5207\u7247\u8bf4\u660e\u7b26\u4e2d\u7701\u7565\u4e00\u4e2a\u6216\u4e24\u4e2a\u8fb9\u754c\uff0c\u4f8b\u5982 <code>array_col[3:]</code>\uff08Yury Zhuravlev\uff09</p>\n<p>\u7701\u7565\u7684\u8fb9\u754c\u88ab\u5f53\u4f5c\u76f8\u5e94\u6570\u7ec4\u4e0b\u6807\u7684\u4e0a\u9650\u6216\u4e0b\u9650\u3002\u8fd9\u4f7f\u8bb8\u591a\u5e38\u89c1\u7528\u4f8b\u7684\u6307\u5b9a\u66f4\u7b80\u5355\u3002</p>", "text": "\u5141\u8bb8\u5728\u6570\u7ec4\u5207\u7247\u8bf4\u660e\u7b26\u4e2d\u7701\u7565\u4e00\u4e2a\u6216\u4e24\u4e2a\u8fb9\u754c\uff0c\u4f8b\u5982 array_col[3:]\uff08Yury Zhuravlev\uff09 \u7701\u7565\u7684\u8fb9\u754c\u88ab\u5f53\u4f5c\u76f8\u5e94\u6570\u7ec4\u4e0b\u6807\u7684\u4e0a\u9650\u6216\u4e0b\u9650\u3002\u8fd9\u4f7f\u8bb8\u591a\u5e38\u89c1\u7528\u4f8b\u7684\u6307\u5b9a\u66f4\u7b80\u5355\u3002", "title": "\u5141\u8bb8\u5728\u6570\u7ec4\u5207\u7247\u8bf4\u660e\u7b26\u4e2d\u7701\u7565\u4e00\u4e2a\u6216\u4e24\u4e2a\u8fb9\u754c\uff0c\u4f8b\u5982 array_col[3:]", "commits": [], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.8", "source_hash": "0a71787a54227532766c3e83a9558204cefc8da9b92ad9f216940ac8161c9d47", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["6efbded6e"]], "identity_text": "Allow omitting one or both boundaries in an array slice specifier, e.g., array_col[3:] (Yury Zhuravlev) Omitted boundaries are taken as the upper or lower limit of the corresponding array subscript. This allows simpler specification for many common use-cases.", "commit_aliases": ["6efbded6e"], "source_commits": ["6efbded6e"], "source_entry_id": "9.6.0/changes/094", "db_id": "0b8e27a722acd363b79728c418456dfe", "patch_ids": ["215e30fce1c9e6f63a0b52b1023027a8"], "statement_hash": "1bd3c5bbfa837c877a6ccad54d65edf2a8d7d9a24aeaeeb3717c2c77520cfe22", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-ab09e4d880780ce3", "migration": false}, {"id": "9.6.0-88af786226e6b9f1", "cves": [], "html": "<p>\u66f4\u8c28\u614e\u5730\u5904\u7406\u8d85\u51fa\u8303\u56f4\u7684\u65e5\u671f\u548c\u65f6\u95f4\u6233\uff08Vitaly Burovoy\uff09</p>\n<p>\u6b64\u66f4\u6539\u9632\u6b62\u5bf9\u975e\u5e38\u63a5\u8fd1\u5b9e\u73b0\u9650\u5236\u7684 <code>timestamp with time zone</code> \u503c\u51fa\u73b0\u610f\u5916\u7684\u8d85\u51fa\u8303\u56f4\u9519\u8bef\u3002\u4ee5\u524d<span>\u201c<span>\u540c\u4e00</span>\u201d</span>\u503c\u53ef\u80fd\u88ab\u63a5\u53d7\u4e5f\u53ef\u80fd\u4e0d\u88ab\u63a5\u53d7\uff0c\u53d6\u51b3\u4e8e <code>timezone</code> \u8bbe\u7f6e\uff0c\u8fd9\u610f\u5473\u7740\u8f6c\u50a8\u548c\u91cd\u65b0\u88c5\u8f7d\u53ef\u80fd\u5728\u4e00\u4e2a\u5148\u524d\u88ab\u63a5\u53d7\u7684\u503c\u4e0a\u5931\u8d25\u3002\u73b0\u5728\u9650\u5236\u6839\u636e\u7b49\u4ef7\u7684 <acronym>UTC</acronym> \u65f6\u95f4\u800c\u975e\u672c\u5730\u65f6\u95f4\u6267\u884c\uff0c\u56e0\u6b64\u4e0e <code>timezone</code> \u65e0\u5173\u3002</p>\n<p>\u6b64\u5916\uff0c<span>PostgreSQL</span> \u73b0\u5728\u66f4\u8c28\u614e\u5730\u68c0\u6d4b\u8ba1\u7b97\u65b0\u65e5\u671f\u6216\u65f6\u95f4\u6233\u503c\u7684\u64cd\u4f5c\uff08\u5982 <code>date</code> <code>+</code> <code>integer</code>\uff09\u4e2d\u7684\u6ea2\u51fa\u3002</p>", "text": "\u66f4\u8c28\u614e\u5730\u5904\u7406\u8d85\u51fa\u8303\u56f4\u7684\u65e5\u671f\u548c\u65f6\u95f4\u6233\uff08Vitaly Burovoy\uff09 \u6b64\u66f4\u6539\u9632\u6b62\u5bf9\u975e\u5e38\u63a5\u8fd1\u5b9e\u73b0\u9650\u5236\u7684 timestamp with time zone \u503c\u51fa\u73b0\u610f\u5916\u7684\u8d85\u51fa\u8303\u56f4\u9519\u8bef\u3002\u4ee5\u524d\u201c\u540c\u4e00\u201d\u503c\u53ef\u80fd\u88ab\u63a5\u53d7\u4e5f\u53ef\u80fd\u4e0d\u88ab\u63a5\u53d7\uff0c\u53d6\u51b3\u4e8e timezone \u8bbe\u7f6e\uff0c\u8fd9\u610f\u5473\u7740\u8f6c\u50a8\u548c\u91cd\u65b0\u88c5\u8f7d\u53ef\u80fd\u5728\u4e00\u4e2a\u5148\u524d\u88ab\u63a5\u53d7\u7684\u503c\u4e0a\u5931\u8d25\u3002\u73b0\u5728\u9650\u5236\u6839\u636e\u7b49\u4ef7\u7684 UTC \u65f6\u95f4\u800c\u975e\u672c\u5730\u65f6\u95f4\u6267\u884c\uff0c\u56e0\u6b64\u4e0e timezone \u65e0\u5173\u3002 \u6b64\u5916\uff0cPostgreSQL \u73b0\u5728\u66f4\u8c28\u614e\u5730\u68c0\u6d4b\u8ba1\u7b97\u65b0\u65e5\u671f\u6216\u65f6\u95f4\u6233\u503c\u7684\u64cd\u4f5c\uff08\u5982 date + integer\uff09\u4e2d\u7684\u6ea2\u51fa\u3002", "title": "\u66f4\u8c28\u614e\u5730\u5904\u7406\u8d85\u51fa\u8303\u56f4\u7684\u65e5\u671f\u548c\u65f6\u95f4\u6233", "commits": [], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.8", "source_hash": "c3d0ae60042cf7dfec487bb92ecaef3715f81a8e860ef48498e1076a37fa652e", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["a70e13a39"]], "identity_text": "Be more careful about out-of-range dates and timestamps (Vitaly Burovoy) This change prevents unexpected out-of-range errors for timestamp with time zone values very close to the implementation limits. Previously, the same value might be accepted or not depending on the timezone setting, meaning that a dump and reload could fail on a value that had been accepted when presented. Now the limits are enforced according to the equivalent UTC time, not local time, so as to be independent of timezone. Also, PostgreSQL is now more careful to detect overflow in operations that compute new date or timestamp values, such as date + integer.", "commit_aliases": ["a70e13a39"], "source_commits": ["a70e13a39"], "source_entry_id": "9.6.0/changes/095", "db_id": "3d6fd19f90871a2b41faebc5bc817361", "patch_ids": ["59fce886b1b727380ff69cc39e2483da"], "statement_hash": "93df7d7d031f0bfbaeda72f03706101a39dc5fee3b2dbd464f839d3b895d489c", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-88af786226e6b9f1", "migration": false}, {"id": "9.6.0-21196e320a851d9b", "cves": [], "html": "<p>\u5bf9\u51e0\u4f55\u6570\u636e\u7c7b\u578b\uff0c\u786e\u4fdd <code>infinity</code> \u548c <code>NaN</code> \u5206\u91cf\u503c\u5728\u8f93\u5165\u548c\u8f93\u51fa\u671f\u95f4\u88ab\u4e00\u81f4\u5904\u7406\uff08Tom Lane\uff09</p>\n<p>\u8fd9\u79cd\u503c\u73b0\u5728\u603b\u662f\u4e0e\u5b83\u4eec\u5728\u7b80\u5355 <code>float8</code> \u5217\u4e2d\u6253\u5370\u7684\u65b9\u5f0f\u76f8\u540c\u5730\u6253\u5370\uff0c\u8f93\u5165\u65f6\u4ee5\u76f8\u540c\u65b9\u5f0f\u63a5\u53d7\u3002\u4ee5\u524d\u884c\u4e3a\u4e0e\u5e73\u53f0\u76f8\u5173\u3002</p>", "text": "\u5bf9\u51e0\u4f55\u6570\u636e\u7c7b\u578b\uff0c\u786e\u4fdd infinity \u548c NaN \u5206\u91cf\u503c\u5728\u8f93\u5165\u548c\u8f93\u51fa\u671f\u95f4\u88ab\u4e00\u81f4\u5904\u7406\uff08Tom Lane\uff09 \u8fd9\u79cd\u503c\u73b0\u5728\u603b\u662f\u4e0e\u5b83\u4eec\u5728\u7b80\u5355 float8 \u5217\u4e2d\u6253\u5370\u7684\u65b9\u5f0f\u76f8\u540c\u5730\u6253\u5370\uff0c\u8f93\u5165\u65f6\u4ee5\u76f8\u540c\u65b9\u5f0f\u63a5\u53d7\u3002\u4ee5\u524d\u884c\u4e3a\u4e0e\u5e73\u53f0\u76f8\u5173\u3002", "title": "\u5bf9\u51e0\u4f55\u6570\u636e\u7c7b\u578b\uff0c\u786e\u4fdd infinity \u548c NaN \u5206\u91cf\u503c\u5728\u8f93\u5165\u548c\u8f93\u51fa\u671f\u95f4\u88ab\u4e00\u81f4\u5904\u7406", "commits": [], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.8", "source_hash": "f7a5aa274e3664f74d299eaa068603a79d18b2adc630d2ea992a9eeab26472f2", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["50861cd68"]], "identity_text": "For geometric data types, make sure infinity and NaN component values are treated consistently during input and output (Tom Lane) Such values will now always print the same as they would in a simple float8 column, and be accepted the same way on input. Previously the behavior was platform-dependent.", "commit_aliases": ["50861cd68"], "source_commits": ["50861cd68"], "source_entry_id": "9.6.0/changes/096", "db_id": "9137e26a3eab7dab0ddc33c4e66f694b", "patch_ids": ["6eee05444e8c70bbab815e3a93a91d0f"], "statement_hash": "cc422c8f7669664b0601b1257d0f5b7ba317289ea83008cec49938d18a7a3c1a", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-21196e320a851d9b", "migration": false}, {"id": "9.6.0-10f6f99a0cfe0d18", "cves": [], "html": "<p>\u5347\u7ea7 <a href=\"/docs/9.6/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\" title=\"12.6.5.\u00a0Ispell \u8bcd\u5178\"><code>ispell</code></a> \u8bcd\u5178\u7c7b\u578b\u4ee5\u5904\u7406\u73b0\u4ee3 <span>Hunspell</span> \u6587\u4ef6\u5e76\u652f\u6301\u66f4\u591a\u8bed\u8a00\uff08Artur Zakirov\uff09</p>", "text": "\u5347\u7ea7 ispell \u8bcd\u5178\u7c7b\u578b\u4ee5\u5904\u7406\u73b0\u4ee3 Hunspell \u6587\u4ef6\u5e76\u652f\u6301\u66f4\u591a\u8bed\u8a00\uff08Artur Zakirov\uff09", "title": "\u5347\u7ea7 ispell \u8bcd\u5178\u7c7b\u578b\u4ee5\u5904\u7406\u73b0\u4ee3 Hunspell \u6587\u4ef6\u5e76\u652f\u6301\u66f4\u591a\u8bed\u8a00", "commits": [], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.8", "source_hash": "d71e5cedc8f1628e57191755cc79dd6cf61cf5a56ac83926563a392f559ac376", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["8829af47e"], ["d78a7d9c7"], ["f4ceed6ce"]], "identity_text": "Upgrade the ispell dictionary type to handle modern Hunspell files and support more languages (Artur Zakirov)", "commit_aliases": ["8829af47e", "d78a7d9c7", "f4ceed6ce"], "source_commits": ["8829af47e", "d78a7d9c7", "f4ceed6ce"], "source_entry_id": "9.6.0/changes/097", "db_id": "4a4644fba0d2d48134f2d204800b6473", "patch_ids": ["3a159b551b25a06434826a110ebc1fa9", "8ceb9a10faf39c0bc7bf99a39ba8eacd", "ce0ee63d93f8dec0944c0256a97bb3a9"], "statement_hash": "a37ec08099e18c82b07df993defc06832c16393584b75e511d3bb4f87240fbae", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-10f6f99a0cfe0d18", "migration": false}, {"id": "9.6.0-982159a84d6151df", "cves": [], "html": "<p>\u5728<a href=\"/docs/9.6/functions-matching.html#FUNCTIONS-POSIX-REGEXP\" title=\"9.7.3.\u00a0POSIX\u6b63\u5219\u8868\u8fbe\u5f0f\">\u6b63\u5219\u8868\u8fbe\u5f0f</a>\u4e2d\u5b9e\u73b0\u540e\u987e\u7ea6\u675f\uff08Tom Lane\uff09</p>\n<p>\u540e\u987e\u7ea6\u675f\u4e0e\u524d\u77bb\u7ea6\u675f\u7c7b\u4f3c\uff0c\u4e0d\u6d88\u8017\u6587\u672c\uff1b\u4f46\u5b83\u68c0\u67e5\u5728\u5b57\u7b26\u4e32\u5f53\u524d\u70b9\u7ed3\u675f\u7684\u5339\u914d\uff08\u6216\u4e0d\u5b58\u5728\uff09\uff0c\u800c\u4e0d\u662f\u5728\u5f53\u524d\u70b9\u5f00\u59cb\u7684\u5339\u914d\u3002\u8bb8\u591a\u5176\u4ed6\u6b63\u5219\u8868\u8fbe\u5f0f\u5f15\u64ce\u4e2d\u5b58\u5728\u7c7b\u4f3c\u7279\u6027\u3002</p>", "text": "\u5728\u6b63\u5219\u8868\u8fbe\u5f0f\u4e2d\u5b9e\u73b0\u540e\u987e\u7ea6\u675f\uff08Tom Lane\uff09 \u540e\u987e\u7ea6\u675f\u4e0e\u524d\u77bb\u7ea6\u675f\u7c7b\u4f3c\uff0c\u4e0d\u6d88\u8017\u6587\u672c\uff1b\u4f46\u5b83\u68c0\u67e5\u5728\u5b57\u7b26\u4e32\u5f53\u524d\u70b9\u7ed3\u675f\u7684\u5339\u914d\uff08\u6216\u4e0d\u5b58\u5728\uff09\uff0c\u800c\u4e0d\u662f\u5728\u5f53\u524d\u70b9\u5f00\u59cb\u7684\u5339\u914d\u3002\u8bb8\u591a\u5176\u4ed6\u6b63\u5219\u8868\u8fbe\u5f0f\u5f15\u64ce\u4e2d\u5b58\u5728\u7c7b\u4f3c\u7279\u6027\u3002", "title": "\u5728\u6b63\u5219\u8868\u8fbe\u5f0f\u4e2d\u5b9e\u73b0\u540e\u987e\u7ea6\u675f", "commits": [], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.8", "source_hash": "ee64a5cff725e486b6bf843d6421361c4caf10eda31692eb541a446e1804f814", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["12c9a0400"]], "identity_text": "Implement look-behind constraints in regular expressions (Tom Lane) A look-behind constraint is like a lookahead constraint in that it consumes no text; but it checks for existence (or nonexistence) of a match ending at the current point in the string, rather than one starting at the current point. Similar features exist in many other regular-expression engines.", "commit_aliases": ["12c9a0400"], "source_commits": ["12c9a0400"], "source_entry_id": "9.6.0/changes/098", "db_id": "ef9b43dc6bdd201f9c8bdd86d38968ec", "patch_ids": ["bf546dc73223139746a7615e5b2f7e62"], "statement_hash": "79e6156b6d181d19856d58ebb264d6b486bdb8ecc5604285d4bbc4698e239f3a", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-982159a84d6151df", "migration": false}, {"id": "9.6.0-3ecaead0504238c2", "cves": [], "html": "<p>\u5728\u6b63\u5219\u8868\u8fbe\u5f0f\u4e2d\uff0c\u5982\u679c\u8868\u9762\u4e0a\u7684\u4e09\u4f4d\u516b\u8fdb\u5236\u8f6c\u4e49 <code>\\</code><em><code>nnn</code></em> \u4f1a\u8d85\u8fc7 377\uff08\u5341\u8fdb\u5236 255\uff09\uff0c\u5c31\u5047\u5b9a\u5b83\u662f\u4e24\u4f4d\u516b\u8fdb\u5236\u8f6c\u4e49\uff08Tom Lane\uff09</p>\n<p>\u8fd9\u4f7f\u884c\u4e3a\u4e0e\u5f53\u524d\u7684 <span>Tcl</span> \u7248\u672c\u5339\u914d\u3002</p>", "text": "\u5728\u6b63\u5219\u8868\u8fbe\u5f0f\u4e2d\uff0c\u5982\u679c\u8868\u9762\u4e0a\u7684\u4e09\u4f4d\u516b\u8fdb\u5236\u8f6c\u4e49 \\nnn \u4f1a\u8d85\u8fc7 377\uff08\u5341\u8fdb\u5236 255\uff09\uff0c\u5c31\u5047\u5b9a\u5b83\u662f\u4e24\u4f4d\u516b\u8fdb\u5236\u8f6c\u4e49\uff08Tom Lane\uff09 \u8fd9\u4f7f\u884c\u4e3a\u4e0e\u5f53\u524d\u7684 Tcl \u7248\u672c\u5339\u914d\u3002", "title": "\u5728\u6b63\u5219\u8868\u8fbe\u5f0f\u4e2d\uff0c\u5982\u679c\u8868\u9762\u4e0a\u7684\u4e09\u4f4d\u516b\u8fdb\u5236\u8f6c\u4e49 \\nnn \u4f1a\u8d85\u8fc7 377\uff08\u5341\u8fdb\u5236 255\uff09\uff0c\u5c31\u5047\u5b9a\u5b83\u662f\u4e24\u4f4d\u516b\u8fdb\u5236\u8f6c\u4e49", "commits": [], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.8", "source_hash": "d6a6e52d887581cca3d427b858acabbe2afaf9ebbaaa1f094479d5ab4f7159b0", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["b44d92b67"]], "identity_text": "In regular expressions, if an apparent three-digit octal escape \\nnn would exceed 377 (255 decimal), assume it is a two-digit octal escape instead (Tom Lane) This makes the behavior match current Tcl releases.", "commit_aliases": ["b44d92b67"], "source_commits": ["b44d92b67"], "source_entry_id": "9.6.0/changes/099", "db_id": "6334e86b5166dedd50b3a2facfd2769c", "patch_ids": ["ec573f116fca067ad53f3828aa0232c1"], "statement_hash": "d0f04a4771e6e4b445ea68a7b3928e5ddf5bd121b1a463113457490e054c0a65", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-3ecaead0504238c2", "migration": false}, {"id": "9.6.0-b2a782625b31d0bb", "cves": [], "html": "<p>\u6dfb\u52a0\u4e8b\u52a1 ID \u64cd\u4f5c\u7b26 <code>xid</code> <code>&lt;&gt;</code> <code>xid</code> \u548c <code>xid</code> <code>&lt;&gt;</code> <code>int4</code>\uff0c\u4ee5\u4e0e\u76f8\u5e94\u7684\u76f8\u7b49\u64cd\u4f5c\u7b26\u4fdd\u6301\u4e00\u81f4\uff08Michael Paquier\uff09</p>", "text": "\u6dfb\u52a0\u4e8b\u52a1 ID \u64cd\u4f5c\u7b26 xid <> xid \u548c xid <> int4\uff0c\u4ee5\u4e0e\u76f8\u5e94\u7684\u76f8\u7b49\u64cd\u4f5c\u7b26\u4fdd\u6301\u4e00\u81f4\uff08Michael Paquier\uff09", "title": "\u6dfb\u52a0\u4e8b\u52a1 ID \u64cd\u4f5c\u7b26 xid <> xid \u548c xid <> int4\uff0c\u4ee5\u4e0e\u76f8\u5e94\u7684\u76f8\u7b49\u64cd\u4f5c\u7b26\u4fdd\u6301\u4e00\u81f4", "commits": [], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.8", "source_hash": "8ed64876e0895b79954c458315841c5f4737c2ad4c467ccad37792f83dfd5b89", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["c5e86ea93"]], "identity_text": "Add transaction ID operators xid <> xid and xid <> int4, for consistency with the corresponding equality operators (Michael Paquier)", "commit_aliases": ["c5e86ea93"], "source_commits": ["c5e86ea93"], "source_entry_id": "9.6.0/changes/100", "db_id": "2e489bd7297766859bfe5f477662dda0", "patch_ids": ["8b84697d539c77d24fbc70343840fb8d"], "statement_hash": "c377ac6e7b9c2d66946b5e91377bf42a75a565c2acc85c239df298e7653f79b6", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-b2a782625b31d0bb", "migration": false}, {"id": "9.6.0-2e96cfada5549436", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/functions-json.html#FUNCTIONS-JSON-PROCESSING-TABLE\" title=\"\u8868\u00a09.45.\u00a0JSON \u5904\u7406\u51fd\u6570\"><code>jsonb_insert()</code></a> \u51fd\u6570\uff0c\u7528\u4e8e\u5411 <code>jsonb</code> \u6570\u7ec4\u63d2\u5165\u65b0\u5143\u7d20\uff0c\u6216\u5411 <code>jsonb</code> \u5bf9\u8c61\u63d2\u5165\u6b64\u524d\u4e0d\u5b58\u5728\u7684\u952e\uff08Dmitry Dolgov\uff09</p>", "text": "\u6dfb\u52a0 jsonb_insert() \u51fd\u6570\uff0c\u7528\u4e8e\u5411 jsonb \u6570\u7ec4\u63d2\u5165\u65b0\u5143\u7d20\uff0c\u6216\u5411 jsonb \u5bf9\u8c61\u63d2\u5165\u6b64\u524d\u4e0d\u5b58\u5728\u7684\u952e\uff08Dmitry Dolgov\uff09", "title": "\u6dfb\u52a0 jsonb_insert() \u51fd\u6570\uff0c\u7528\u4e8e\u5411 jsonb \u6570\u7ec4\u63d2\u5165\u65b0\u5143\u7d20\uff0c\u6216\u5411 jsonb \u5bf9\u8c61\u63d2\u5165\u6b64\u524d\u4e0d\u5b58\u5728\u7684\u952e", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "500a514ce954925d5bc27bb24cc4e776640036cfd573cba4cc9e360ea2c9f6d2", "section_path": ["\u51fd\u6570"], "commit_groups": [["0b62fd036"]], "identity_text": "Add jsonb_insert() function to insert a new element into a jsonb array, or a not-previously-existing key into a jsonb object (Dmitry Dolgov)", "commit_aliases": ["0b62fd036"], "source_commits": ["0b62fd036"], "source_entry_id": "9.6.0/changes/101", "db_id": "8a4dcd6d9ab0952b08a8048801ccecb7", "patch_ids": ["da885f0576618aad6569035871d7996e"], "statement_hash": "ceaf49a40ee8db7f4e5c5299f752a08cc3f11f4a74e7f1c8a5f70e09a1fb147a", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-2e96cfada5549436", "migration": false}, {"id": "9.6.0-6b94f6d734d46ea5", "cves": [], "html": "<p>\u63d0\u9ad8 <code>ln()</code>\u3001<code>log()</code>\u3001<code>exp()</code> \u548c <code>pow()</code> \u51fd\u6570\u5728 <code>numeric</code> \u7c7b\u578b\u4e0a\u7684\u8ba1\u7b97\u7cbe\u5ea6\uff08Dean Rasheed\uff09</p>", "text": "\u63d0\u9ad8 ln()\u3001log()\u3001exp() \u548c pow() \u51fd\u6570\u5728 numeric \u7c7b\u578b\u4e0a\u7684\u8ba1\u7b97\u7cbe\u5ea6\uff08Dean Rasheed\uff09", "title": "\u63d0\u9ad8 ln()\u3001log()\u3001exp() \u548c pow() \u51fd\u6570\u5728 numeric \u7c7b\u578b\u4e0a\u7684\u8ba1\u7b97\u7cbe\u5ea6", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "5ac8325eccc3044345a1ed6c22ccf04e403497244d6b8f3e0b467b545f28973b", "section_path": ["\u51fd\u6570"], "commit_groups": [["18a02ad2a"], ["7d9a4737c"]], "identity_text": "Improve the accuracy of the ln(), log(), exp(), and pow() functions for type numeric (Dean Rasheed)", "commit_aliases": ["18a02ad2a", "7d9a4737c"], "source_commits": ["18a02ad2a", "7d9a4737c"], "source_entry_id": "9.6.0/changes/102", "db_id": "1e5dac4ea6bdae5ec9d412f67bc16b00", "patch_ids": ["a5d6b9999591cd4d50499e424f7b058a", "f1e604bd13318598dd854920dcc55bd5"], "statement_hash": "0e22406c99401f30104948400c3fdaa29eeed383a61823d4d619811a7e46d6eb", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-6b94f6d734d46ea5", "migration": false}, {"id": "9.6.0-cc398ac2773abb50", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/functions-math.html#FUNCTIONS-MATH-FUNC-TABLE\" title=\"\u8868\u00a09.5.\u00a0\u6570\u5b66\u51fd\u6570\"><code>scale(numeric)</code></a> \u51fd\u6570\u4ee5\u63d0\u53d6 <code>numeric</code> \u503c\u7684\u663e\u793a\u6807\u5ea6\uff08Marko Tiikkaja\uff09</p>", "text": "\u6dfb\u52a0 scale(numeric) \u51fd\u6570\u4ee5\u63d0\u53d6 numeric \u503c\u7684\u663e\u793a\u6807\u5ea6\uff08Marko Tiikkaja\uff09", "title": "\u6dfb\u52a0 scale(numeric) \u51fd\u6570\u4ee5\u63d0\u53d6 numeric \u503c\u7684\u663e\u793a\u6807\u5ea6", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "5b85eaa3773c20ed5e97061bdaa1a0381a54960ac97c14d19fbff75383be5e35", "section_path": ["\u51fd\u6570"], "commit_groups": [["abb173392"]], "identity_text": "Add a scale(numeric) function to extract the display scale of a numeric value (Marko Tiikkaja)", "commit_aliases": ["abb173392"], "source_commits": ["abb173392"], "source_entry_id": "9.6.0/changes/103", "db_id": "573df66e47331737213d286c60614475", "patch_ids": ["cea785939a8919a2b5da7d903707baf6"], "statement_hash": "cd16696354d1b4797ecb9e5d17bbfea5dc86becf39c1fabb64666fa3fc9e4fa7", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-cc398ac2773abb50", "migration": false}, {"id": "9.6.0-5a196f42bca02a32", "cves": [], "html": "<p>\u6dfb\u52a0\u4ee5\u5ea6\u4e3a\u5355\u4f4d\u7684\u4e09\u89d2\u51fd\u6570\uff08Dean Rasheed\uff09</p>\n<p>\u4f8b\u5982 <a href=\"/docs/9.6/functions-math.html#FUNCTIONS-MATH-TRIG-TABLE\" title=\"\u8868\u00a09.7.\u00a0\u4e09\u89d2\u51fd\u6570\"><code>sind()</code></a> \u4ee5\u5ea6\u5ea6\u91cf\u5176\u53c2\u6570\uff0c\u800c <code>sin()</code> \u4ee5\u5f27\u5ea6\u5ea6\u91cf\u3002\u8fd9\u4e9b\u51fd\u6570\u7aed\u529b\u5728\u53ef\u4ee5\u671f\u5f85\u7cbe\u786e\u7ed3\u679c\u7684\u503c\u4e0a\u7ed9\u51fa\u7cbe\u786e\u7ed3\u679c\uff0c\u4f8b\u5982 <code>sind(30) = 0.5</code>\u3002</p>", "text": "\u6dfb\u52a0\u4ee5\u5ea6\u4e3a\u5355\u4f4d\u7684\u4e09\u89d2\u51fd\u6570\uff08Dean Rasheed\uff09 \u4f8b\u5982 sind() \u4ee5\u5ea6\u5ea6\u91cf\u5176\u53c2\u6570\uff0c\u800c sin() \u4ee5\u5f27\u5ea6\u5ea6\u91cf\u3002\u8fd9\u4e9b\u51fd\u6570\u7aed\u529b\u5728\u53ef\u4ee5\u671f\u5f85\u7cbe\u786e\u7ed3\u679c\u7684\u503c\u4e0a\u7ed9\u51fa\u7cbe\u786e\u7ed3\u679c\uff0c\u4f8b\u5982 sind(30) = 0.5\u3002", "title": "\u6dfb\u52a0\u4ee5\u5ea6\u4e3a\u5355\u4f4d\u7684\u4e09\u89d2\u51fd\u6570", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "149be166194670e1011b8dd74c3b2c7ce090ab0fabfee637c075d0e5316f5025", "section_path": ["\u51fd\u6570"], "commit_groups": [["e1bd684a3"]], "identity_text": "Add trigonometric functions that work in degrees (Dean Rasheed) For example, sind() measures its argument in degrees, whereas sin() measures in radians. These functions go to some lengths to deliver exact results for values where an exact result can be expected, for instance sind(30) = 0.5.", "commit_aliases": ["e1bd684a3"], "source_commits": ["e1bd684a3"], "source_entry_id": "9.6.0/changes/104", "db_id": "c3aea9dccd53d85f3d9f25497a7366df", "patch_ids": ["4d27f914a37ab52ed9472718f8cd6864"], "statement_hash": "16ec4f9a95b994bf7cf448879e0a6ff8ffc1e7896494eec0f31b0289f4f847b5", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-5a196f42bca02a32", "migration": false}, {"id": "9.6.0-62299cd05c21824d", "cves": [], "html": "<p>\u786e\u4fdd\u4e09\u89d2\u51fd\u6570\u6309\u7167 <acronym>POSIX</acronym> \u6807\u51c6\u5904\u7406 <code>infinity</code> \u548c <code>NaN</code> \u8f93\u5165\uff08Dean Rasheed\uff09</p>\n<p><acronym>POSIX</acronym> \u6807\u51c6\u8bf4\u8fd9\u4e9b\u51fd\u6570\u5bf9 <code>NaN</code> \u8f93\u5165\u5e94\u8fd4\u56de <code>NaN</code>\uff0c\u5bf9\u5305\u62ec <code>infinity</code> \u5728\u5185\u7684\u8d85\u51fa\u8303\u56f4\u8f93\u5165\u5e94\u629b\u51fa\u9519\u8bef\u3002\u4ee5\u524d\u6211\u4eec\u7684\u884c\u4e3a\u968f\u5e73\u53f0\u800c\u5f02\u3002</p>", "text": "\u786e\u4fdd\u4e09\u89d2\u51fd\u6570\u6309\u7167 POSIX \u6807\u51c6\u5904\u7406 infinity \u548c NaN \u8f93\u5165\uff08Dean Rasheed\uff09 POSIX \u6807\u51c6\u8bf4\u8fd9\u4e9b\u51fd\u6570\u5bf9 NaN \u8f93\u5165\u5e94\u8fd4\u56de NaN\uff0c\u5bf9\u5305\u62ec infinity \u5728\u5185\u7684\u8d85\u51fa\u8303\u56f4\u8f93\u5165\u5e94\u629b\u51fa\u9519\u8bef\u3002\u4ee5\u524d\u6211\u4eec\u7684\u884c\u4e3a\u968f\u5e73\u53f0\u800c\u5f02\u3002", "title": "\u786e\u4fdd\u4e09\u89d2\u51fd\u6570\u6309\u7167 POSIX \u6807\u51c6\u5904\u7406 infinity \u548c NaN \u8f93\u5165", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "7b431e23c2825468f3f9754c1f6f6d6c2e02e6c442273574bcbdc053a5b675bd", "section_path": ["\u51fd\u6570"], "commit_groups": [["fd5200c3d"]], "identity_text": "Ensure that trigonometric functions handle infinity and NaN inputs per the POSIX standard (Dean Rasheed) The POSIX standard says that these functions should return NaN for NaN input, and should throw an error for out-of-range inputs including infinity. Previously our behavior varied across platforms.", "commit_aliases": ["fd5200c3d"], "source_commits": ["fd5200c3d"], "source_entry_id": "9.6.0/changes/105", "db_id": "b5bcce83b7bfc35cf1e15e9cb92991ee", "patch_ids": ["c256141f0fac850551d5af7fc5affe40"], "statement_hash": "b8f16ed5579f74b0559ff9f810632eaf0bb520a4ef6f68f92fa0f7f102a2e213", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-62299cd05c21824d", "migration": false}, {"id": "9.6.0-5d953108ad45da8e", "cves": [], "html": "<p>\u4f7f <a href=\"/docs/9.6/functions-datetime.html#FUNCTIONS-DATETIME-TABLE\" title=\"\u8868\u00a09.30.\u00a0\u65e5\u671f/\u65f6\u95f4\u51fd\u6570\"><code>to_timestamp(float8)</code></a> \u628a\u6d6e\u70b9 <code>infinity</code> \u8f6c\u6362\u4e3a\u65f6\u95f4\u6233 <code>infinity</code>\uff08Vitaly Burovoy\uff09</p>\n<p>\u4ee5\u524d\u5b83\u5bf9\u65e0\u7a77\u8f93\u5165\u53ea\u4f1a\u5931\u8d25\u3002</p>", "text": "\u4f7f to_timestamp(float8) \u628a\u6d6e\u70b9 infinity \u8f6c\u6362\u4e3a\u65f6\u95f4\u6233 infinity\uff08Vitaly Burovoy\uff09 \u4ee5\u524d\u5b83\u5bf9\u65e0\u7a77\u8f93\u5165\u53ea\u4f1a\u5931\u8d25\u3002", "title": "\u4f7f to_timestamp(float8) \u628a\u6d6e\u70b9 infinity \u8f6c\u6362\u4e3a\u65f6\u95f4\u6233 infinity", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "e512680f836618432e4cfb4fb55ce6e53eb00ad522e9be5a2ae791e705d51763", "section_path": ["\u51fd\u6570"], "commit_groups": [["e511d878f"]], "identity_text": "Make to_timestamp(float8) convert float infinity to timestamp infinity (Vitaly Burovoy) Formerly it just failed on an infinite input.", "commit_aliases": ["e511d878f"], "source_commits": ["e511d878f"], "source_entry_id": "9.6.0/changes/106", "db_id": "864a2e107d230ea17ea1667ceb6159cc", "patch_ids": ["8fb61b3aadd0d82159229718644a5231"], "statement_hash": "b9925191da301e722f58ab41cf3268e66d852455bbc761269ca793de57708546", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-5d953108ad45da8e", "migration": false}, {"id": "9.6.0-fe7672c663a6897a", "cves": [], "html": "<p>\u4e3a <code>tsvector</code> \u6570\u636e\u6dfb\u52a0\u65b0\u51fd\u6570\uff08Stas Kelvich\uff09</p>\n<p>\u65b0\u51fd\u6570\u662f <a href=\"/docs/9.6/functions-textsearch.html#TEXTSEARCH-FUNCTIONS-TABLE\" title=\"\u8868\u00a09.40.\u00a0\u6587\u672c\u641c\u7d22\u51fd\u6570\"><code>ts_delete()</code></a>\u3001<code>ts_filter()</code>\u3001<code>unnest()</code>\u3001<code>tsvector_to_array()</code>\u3001<code>array_to_tsvector()</code>\uff0c\u4ee5\u53ca\u53ea\u4e3a\u6307\u5b9a\u8bcd\u7d20\u8bbe\u7f6e\u6743\u91cd\u7684 <code>setweight()</code> \u53d8\u4f53\u3002</p>", "text": "\u4e3a tsvector \u6570\u636e\u6dfb\u52a0\u65b0\u51fd\u6570\uff08Stas Kelvich\uff09 \u65b0\u51fd\u6570\u662f ts_delete()\u3001ts_filter()\u3001unnest()\u3001tsvector_to_array()\u3001array_to_tsvector()\uff0c\u4ee5\u53ca\u53ea\u4e3a\u6307\u5b9a\u8bcd\u7d20\u8bbe\u7f6e\u6743\u91cd\u7684 setweight() \u53d8\u4f53\u3002", "title": "\u4e3a tsvector \u6570\u636e\u6dfb\u52a0\u65b0\u51fd\u6570", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "305fa4e91cca6e9c555bc6c07e9dc6402148da70957555bd59b4578c6bf77308", "section_path": ["\u51fd\u6570"], "commit_groups": [["0b9a23443"], ["6943a946c"]], "identity_text": "Add new functions for tsvector data (Stas Kelvich) The new functions are ts_delete(), ts_filter(), unnest(), tsvector_to_array(), array_to_tsvector(), and a variant of setweight() that sets the weight only for specified lexeme(s).", "commit_aliases": ["0b9a23443", "6943a946c"], "source_commits": ["0b9a23443", "6943a946c"], "source_entry_id": "9.6.0/changes/107", "db_id": "2fcc96ad1e4c3e775265fcada95adb3a", "patch_ids": ["787f0c10a5220ba6f214b6e63163c8f6", "99275814a7ea1f6182c81b5d7bb4db38"], "statement_hash": "17deae91effe11468d80a389e8777f7b1a69ea025464b04bcf8ce129ebad0f55", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-fe7672c663a6897a", "migration": false}, {"id": "9.6.0-88c60ee85c512b04", "cves": [], "html": "<p>\u5141\u8bb8 <a href=\"/docs/9.6/textsearch-features.html#TEXTSEARCH-STATISTICS\" title=\"12.4.4.\u00a0\u6536\u96c6\u6587\u6863\u7edf\u8ba1\u6570\u636e\"><code>ts_stat()</code></a> \u548c <a href=\"/docs/9.6/textsearch-features.html#TEXTSEARCH-UPDATE-TRIGGERS\" title=\"12.4.3.\u00a0\u7528\u4e8e\u81ea\u52a8\u66f4\u65b0\u7684\u89e6\u53d1\u5668\"><code>tsvector_update_trigger()</code></a> \u5bf9\u4e0e\u9884\u671f\u53c2\u6570\u7c7b\u578b\u4e8c\u8fdb\u5236\u517c\u5bb9\u7684\u7c7b\u578b\uff08\u800c\u4e0d\u53ea\u662f\u6070\u597d\u8be5\u7c7b\u578b\uff09\u7684\u503c\u8fdb\u884c\u64cd\u4f5c\uff1b\u4f8b\u5982\u5728\u671f\u671b <code>text</code> \u4e4b\u5904\u5141\u8bb8 <code>citext</code>\uff08Teodor Sigaev\uff09</p>", "text": "\u5141\u8bb8 ts_stat() \u548c tsvector_update_trigger() \u5bf9\u4e0e\u9884\u671f\u53c2\u6570\u7c7b\u578b\u4e8c\u8fdb\u5236\u517c\u5bb9\u7684\u7c7b\u578b\uff08\u800c\u4e0d\u53ea\u662f\u6070\u597d\u8be5\u7c7b\u578b\uff09\u7684\u503c\u8fdb\u884c\u64cd\u4f5c\uff1b\u4f8b\u5982\u5728\u671f\u671b text \u4e4b\u5904\u5141\u8bb8 citext\uff08Teodor Sigaev\uff09", "title": "\u5141\u8bb8 ts_stat() \u548c tsvector_update_trigger() \u5bf9\u4e0e\u9884\u671f\u53c2\u6570\u7c7b\u578b\u4e8c\u8fdb\u5236\u517c\u5bb9\u7684\u7c7b\u578b\uff08\u800c\u4e0d\u53ea\u662f\u6070\u597d\u8be5\u7c7b\u578b\uff09\u7684\u503c\u8fdb\u884c\u64cd\u4f5c\uff1b\u4f8b\u5982\u5728\u671f\u671b text \u4e4b\u5904\u5141\u8bb8 citext", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "ea980e5ce4ec91394a544c9f1e2709a5e7e94f3847260c171bc13c9a3edf0313", "section_path": ["\u51fd\u6570"], "commit_groups": [["9acb9007d"]], "identity_text": "Allow ts_stat() and tsvector_update_trigger() to operate on values that are of types binary-compatible with the expected argument type, not just exactly that type; for example allow citext where text is expected (Teodor Sigaev)", "commit_aliases": ["9acb9007d"], "source_commits": ["9acb9007d"], "source_entry_id": "9.6.0/changes/108", "db_id": "7f4cfb21cc2619e73b83e249d19a91cd", "patch_ids": ["a234aa050f359d0053e0e85f0a3bf100"], "statement_hash": "ca4f8ea493ae843a96b6ec535fbfc6401a885b12836c21709995f58cf2aab8c1", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-88c60ee85c512b04", "migration": false}, {"id": "9.6.0-20d25c076b4d55f3", "cves": [], "html": "<p>\u6dfb\u52a0\u53ef\u53d8\u53c2\u6570\u51fd\u6570 <a href=\"/docs/9.6/functions-comparison.html#FUNCTIONS-COMPARISON-FUNC-TABLE\" title=\"\u8868\u00a09.3.\u00a0\u6bd4\u8f83\u51fd\u6570\"><code>num_nulls()</code></a> \u548c <code>num_nonnulls()</code>\uff0c\u7edf\u8ba1\u5176\u53c2\u6570\u4e2d\u7a7a\u6216\u975e\u7a7a\u7684\u6570\u91cf\uff08Marko Tiikkaja\uff09</p>\n<p>\u4e00\u4e2a\u7528\u6cd5\u793a\u4f8b\u662f <code>CHECK(num_nonnulls(a,b,c) = 1)</code>\uff0c\u65ad\u8a00 a,b,c \u4e2d\u6070\u597d\u6709\u4e00\u4e2a\u4e0d\u4e3a <code>NULL</code>\u3002\u8fd9\u4e9b\u51fd\u6570\u8fd8\u53ef\u7528\u4e8e\u7edf\u8ba1\u6570\u7ec4\u4e2d\u7a7a\u6216\u975e\u7a7a\u5143\u7d20\u7684\u6570\u91cf\u3002</p>", "text": "\u6dfb\u52a0\u53ef\u53d8\u53c2\u6570\u51fd\u6570 num_nulls() \u548c num_nonnulls()\uff0c\u7edf\u8ba1\u5176\u53c2\u6570\u4e2d\u7a7a\u6216\u975e\u7a7a\u7684\u6570\u91cf\uff08Marko Tiikkaja\uff09 \u4e00\u4e2a\u7528\u6cd5\u793a\u4f8b\u662f CHECK(num_nonnulls(a,b,c) = 1)\uff0c\u65ad\u8a00 a,b,c \u4e2d\u6070\u597d\u6709\u4e00\u4e2a\u4e0d\u4e3a NULL\u3002\u8fd9\u4e9b\u51fd\u6570\u8fd8\u53ef\u7528\u4e8e\u7edf\u8ba1\u6570\u7ec4\u4e2d\u7a7a\u6216\u975e\u7a7a\u5143\u7d20\u7684\u6570\u91cf\u3002", "title": "\u6dfb\u52a0\u53ef\u53d8\u53c2\u6570\u51fd\u6570 num_nulls() \u548c num_nonnulls()\uff0c\u7edf\u8ba1\u5176\u53c2\u6570\u4e2d\u7a7a\u6216\u975e\u7a7a\u7684\u6570\u91cf", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "b14c552b1bef8a0bd71fa2c9981c4b9bc3c5c2680b4620c621d2e78e569741f2", "section_path": ["\u51fd\u6570"], "commit_groups": [["6819514fc"]], "identity_text": "Add variadic functions num_nulls() and num_nonnulls() that count the number of their arguments that are null or non-null (Marko Tiikkaja) An example usage is CHECK(num_nonnulls(a,b,c) = 1) which asserts that exactly one of a,b,c is not NULL. These functions can also be used to count the number of null or nonnull elements in an array.", "commit_aliases": ["6819514fc"], "source_commits": ["6819514fc"], "source_entry_id": "9.6.0/changes/109", "db_id": "ac9a5b71b18dbbd98304b62e55ef1dab", "patch_ids": ["b7c6456f353622d8330771a7700b139d"], "statement_hash": "891e666d607c25bdd6bf44662e473e0c2bfadfc9bc191e8296c28f29e0232205", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-20d25c076b4d55f3", "migration": false}, {"id": "9.6.0-062e16b4c273534b", "cves": [], "html": "<p>\u6dfb\u52a0\u51fd\u6570 <a href=\"/docs/9.6/functions-string.html#FUNCTIONS-STRING-OTHER\" title=\"\u8868\u00a09.9.\u00a0\u5176\u4ed6\u5b57\u7b26\u4e32\u51fd\u6570\"><code>parse_ident()</code></a> \u4ee5\u628a\u9650\u5b9a\u7684\u3001\u53ef\u80fd\u5e26\u5f15\u53f7\u7684 <acronym>SQL</acronym> \u6807\u8bc6\u7b26\u62c6\u5206\u6210\u5404\u90e8\u5206\uff08Pavel Stehule\uff09</p>", "text": "\u6dfb\u52a0\u51fd\u6570 parse_ident() \u4ee5\u628a\u9650\u5b9a\u7684\u3001\u53ef\u80fd\u5e26\u5f15\u53f7\u7684 SQL \u6807\u8bc6\u7b26\u62c6\u5206\u6210\u5404\u90e8\u5206\uff08Pavel Stehule\uff09", "title": "\u6dfb\u52a0\u51fd\u6570 parse_ident() \u4ee5\u628a\u9650\u5b9a\u7684\u3001\u53ef\u80fd\u5e26\u5f15\u53f7\u7684 SQL \u6807\u8bc6\u7b26\u62c6\u5206\u6210\u5404\u90e8\u5206", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "973d3b98d8e55ae667f5b86f5ae5a43900ee4b2e8fa18c849192081ced5120b7", "section_path": ["\u51fd\u6570"], "commit_groups": [["3187d6de0"]], "identity_text": "Add function parse_ident() to split a qualified, possibly quoted SQL identifier into its parts (Pavel Stehule)", "commit_aliases": ["3187d6de0"], "source_commits": ["3187d6de0"], "source_entry_id": "9.6.0/changes/110", "db_id": "87ac28170e677ac268b657bdf7c484a0", "patch_ids": ["a24deb8035bcc6cf70465bd196d8f094"], "statement_hash": "568714e3f0226122e7cc0a7bab0891e7abb1bf4cb9da963b52e98e1912a2fd60", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-062e16b4c273534b", "migration": false}, {"id": "9.6.0-3317014fb5243da7", "cves": [], "html": "<p>\u5728 <a href=\"/docs/9.6/functions-formatting.html#FUNCTIONS-FORMATTING-TABLE\" title=\"\u8868\u00a09.23.\u00a0\u683c\u5f0f\u5316\u51fd\u6570\"><code>to_number()</code></a> \u4e2d\uff0c\u628a <code>V</code> \u683c\u5f0f\u4ee3\u7801\u89e3\u91ca\u4e3a\u9664\u4ee5 10 \u7684 <code>V</code> \u540e\u6570\u5b57\u6b21\u6570\u5e42\uff08Bruce Momjian\uff09</p>\n<p>\u8fd9\u4f7f\u5b83\u4ee5\u4e0e <code>to_char()</code> \u76f8\u9006\u7684\u65b9\u5f0f\u64cd\u4f5c\u3002</p>", "text": "\u5728 to_number() \u4e2d\uff0c\u628a V \u683c\u5f0f\u4ee3\u7801\u89e3\u91ca\u4e3a\u9664\u4ee5 10 \u7684 V \u540e\u6570\u5b57\u6b21\u6570\u5e42\uff08Bruce Momjian\uff09 \u8fd9\u4f7f\u5b83\u4ee5\u4e0e to_char() \u76f8\u9006\u7684\u65b9\u5f0f\u64cd\u4f5c\u3002", "title": "\u5728 to_number() \u4e2d\uff0c\u628a V \u683c\u5f0f\u4ee3\u7801\u89e3\u91ca\u4e3a\u9664\u4ee5 10 \u7684 V \u540e\u6570\u5b57\u6b21\u6570\u5e42", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "25170dc6aa0e8fc2a7bc6bd95017feb2e8d01cbcdfd487e950b941f1ac975c94", "section_path": ["\u51fd\u6570"], "commit_groups": [["28b3a3d41"]], "identity_text": "In to_number(), interpret a V format code as dividing by 10 to the power of the number of digits following V (Bruce Momjian) This makes it operate in an inverse fashion to to_char().", "commit_aliases": ["28b3a3d41"], "source_commits": ["28b3a3d41"], "source_entry_id": "9.6.0/changes/111", "db_id": "7ee8253aace196ff399cc2c1fa6b6835", "patch_ids": ["a47c4de8a966f0601ce12b1b3cd10ca0"], "statement_hash": "2cb5cce68ffe7d3b4ca929abb85a9f047aa74671936712e014f00732b84b1a1d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-3317014fb5243da7", "migration": false}, {"id": "9.6.0-438a2f9d56e47b2e", "cves": [], "html": "<p>\u4f7f <a href=\"/docs/9.6/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"\u8868\u00a09.62.\u00a0\u7cfb\u7edf\u76ee\u5f55\u4fe1\u606f\u51fd\u6570\"><code>to_reg*()</code></a> \u51fd\u6570\u63a5\u53d7 <code>text</code> \u7c7b\u578b\u800c\u975e <code>cstring</code>\uff08Petr Korobeinikov\uff09</p>\n<p>\u8fd9\u907f\u514d\u4e86\u5728\u53c2\u6570\u4e0d\u662f\u7b80\u5355\u5b57\u9762\u5e38\u91cf\u7684\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u7f16\u5199\u663e\u5f0f\u5f3a\u5236\u8f6c\u6362\u7684\u9700\u8981\u3002</p>", "text": "\u4f7f to_reg*() \u51fd\u6570\u63a5\u53d7 text \u7c7b\u578b\u800c\u975e cstring\uff08Petr Korobeinikov\uff09 \u8fd9\u907f\u514d\u4e86\u5728\u53c2\u6570\u4e0d\u662f\u7b80\u5355\u5b57\u9762\u5e38\u91cf\u7684\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u7f16\u5199\u663e\u5f0f\u5f3a\u5236\u8f6c\u6362\u7684\u9700\u8981\u3002", "title": "\u4f7f to_reg*() \u51fd\u6570\u63a5\u53d7 text \u7c7b\u578b\u800c\u975e cstring", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "7d180c4764c530b0a356da4f91dd8acd124dc449ce4ca7b78afa5ce34afae321", "section_path": ["\u51fd\u6570"], "commit_groups": [["ea0d494da"]], "identity_text": "Make the to_reg*() functions accept type text not cstring (Petr Korobeinikov) This avoids the need to write an explicit cast in most cases where the argument is not a simple literal constant.", "commit_aliases": ["ea0d494da"], "source_commits": ["ea0d494da"], "source_entry_id": "9.6.0/changes/112", "db_id": "171a8320322c2078e211fcbf7f6baa33", "patch_ids": ["cc95636ee646ef3991310764dd61cc24"], "statement_hash": "7a6486065a8a220f2f833d273264b82a661e1541831bf908e97859eb709ef545", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-438a2f9d56e47b2e", "migration": false}, {"id": "9.6.0-6b0eafe00cddbc7e", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/functions-admin.html#FUNCTIONS-ADMIN-DBSIZE\" title=\"\u8868\u00a09.83.\u00a0\u6570\u636e\u5e93\u5bf9\u8c61\u5c3a\u5bf8\u51fd\u6570\"><code>pg_size_bytes()</code></a> \u51fd\u6570\u4ee5\u628a\u4eba\u7c7b\u53ef\u8bfb\u7684\u5927\u5c0f\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a\u6570\u5b57\uff08Pavel Stehule\u3001Vitaly Burovoy\u3001Dean Rasheed\uff09</p>\n<p>\u6b64\u51fd\u6570\u628a <code>pg_size_pretty()</code> \u4ea7\u751f\u7684\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a\u5b57\u8282\u3002\u4e00\u4e2a\u7528\u6cd5\u793a\u4f8b\u662f <code>SELECT oid::regclass FROM pg_class WHERE pg_total_relation_size(oid) &gt; pg_size_bytes('10 GB')</code>\u3002</p>", "text": "\u6dfb\u52a0 pg_size_bytes() \u51fd\u6570\u4ee5\u628a\u4eba\u7c7b\u53ef\u8bfb\u7684\u5927\u5c0f\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a\u6570\u5b57\uff08Pavel Stehule\u3001Vitaly Burovoy\u3001Dean Rasheed\uff09 \u6b64\u51fd\u6570\u628a pg_size_pretty() \u4ea7\u751f\u7684\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a\u5b57\u8282\u3002\u4e00\u4e2a\u7528\u6cd5\u793a\u4f8b\u662f SELECT oid::regclass FROM pg_class WHERE pg_total_relation_size(oid) > pg_size_bytes('10 GB')\u3002", "title": "\u6dfb\u52a0 pg_size_bytes() \u51fd\u6570\u4ee5\u628a\u4eba\u7c7b\u53ef\u8bfb\u7684\u5927\u5c0f\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a\u6570\u5b57", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "8a9dd1920109f60f0fabbbf89a67cd2d55c403dfd6e7005bf2f2b4fe544a19b8", "section_path": ["\u51fd\u6570"], "commit_groups": [["53874c522"]], "identity_text": "Add pg_size_bytes() function to convert human-readable size strings to numbers (Pavel Stehule, Vitaly Burovoy, Dean Rasheed) This function converts strings like those produced by pg_size_pretty() into bytes. An example usage is SELECT oid::regclass FROM pg_class WHERE pg_total_relation_size(oid) > pg_size_bytes('10 GB').", "commit_aliases": ["53874c522"], "source_commits": ["53874c522"], "source_entry_id": "9.6.0/changes/113", "db_id": "6b4df0dbd0e5bfa56faff9b14a54d748", "patch_ids": ["2656fe995909d40937acf051f8ca2b2a"], "statement_hash": "a978e1c298c556929ba28319d6dc519b61d78c3732d71f89aeb367fc6436d147", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-6b0eafe00cddbc7e", "migration": false}, {"id": "9.6.0-bdf39f437ab9dc30", "cves": [], "html": "<p>\u5728 <a href=\"/docs/9.6/functions-admin.html#FUNCTIONS-ADMIN-DBSIZE\" title=\"\u8868\u00a09.83.\u00a0\u6570\u636e\u5e93\u5bf9\u8c61\u5c3a\u5bf8\u51fd\u6570\"><code>pg_size_pretty()</code></a> \u4e2d\uff0c\u8d1f\u6570\u7684\u683c\u5f0f\u5316\u4e0e\u6b63\u6570\u76f8\u4f3c\uff08Adrian Vondendriesch\uff09</p>\n<p>\u4ee5\u524d\u8d1f\u6570\u4ece\u4e0d\u7f29\u5199\uff0c\u53ea\u662f\u4ee5\u5b57\u8282\u6253\u5370\u3002</p>", "text": "\u5728 pg_size_pretty() \u4e2d\uff0c\u8d1f\u6570\u7684\u683c\u5f0f\u5316\u4e0e\u6b63\u6570\u76f8\u4f3c\uff08Adrian Vondendriesch\uff09 \u4ee5\u524d\u8d1f\u6570\u4ece\u4e0d\u7f29\u5199\uff0c\u53ea\u662f\u4ee5\u5b57\u8282\u6253\u5370\u3002", "title": "\u5728 pg_size_pretty() \u4e2d\uff0c\u8d1f\u6570\u7684\u683c\u5f0f\u5316\u4e0e\u6b63\u6570\u76f8\u4f3c", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "76a60cbf1385761fc47a398ac2598ea42ca4eeeee825c5d2f4ab190856318d2b", "section_path": ["\u51fd\u6570"], "commit_groups": [["8a1fab36a"]], "identity_text": "In pg_size_pretty(), format negative numbers similarly to positive ones (Adrian Vondendriesch) Previously, negative numbers were never abbreviated, just printed in bytes.", "commit_aliases": ["8a1fab36a"], "source_commits": ["8a1fab36a"], "source_entry_id": "9.6.0/changes/114", "db_id": "27fbf9292ed30e1c012c9863faf1133a", "patch_ids": ["47a2cadb68c5b563fe1843460440caff"], "statement_hash": "b797698241e51e62bb6cf8bd1f343779be6e03f2ef67c52bd7798fb47cb78d62", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-bdf39f437ab9dc30", "migration": false}, {"id": "9.6.0-486b2853d424348d", "cves": [], "html": "<p>\u4e3a <a href=\"/docs/9.6/functions-admin.html#FUNCTIONS-ADMIN-SET-TABLE\" title=\"\u8868\u00a09.76.\u00a0\u914d\u7f6e\u8bbe\u5b9a\u51fd\u6570\"><code>current_setting()</code></a> \u51fd\u6570\u6dfb\u52a0\u53ef\u9009\u7684 <em><code>missing_ok</code></em> \u53c2\u6570\uff08David Christensen\uff09</p>\n<p>\u8fd9\u5141\u8bb8\u5bf9\u65e0\u6cd5\u8bc6\u522b\u7684\u53c2\u6570\u540d\u907f\u514d\u9519\u8bef\uff0c\u6539\u4e3a\u8fd4\u56de <code>NULL</code>\u3002</p>", "text": "\u4e3a current_setting() \u51fd\u6570\u6dfb\u52a0\u53ef\u9009\u7684 missing_ok \u53c2\u6570\uff08David Christensen\uff09 \u8fd9\u5141\u8bb8\u5bf9\u65e0\u6cd5\u8bc6\u522b\u7684\u53c2\u6570\u540d\u907f\u514d\u9519\u8bef\uff0c\u6539\u4e3a\u8fd4\u56de NULL\u3002", "title": "\u4e3a current_setting() \u51fd\u6570\u6dfb\u52a0\u53ef\u9009\u7684 missing_ok \u53c2\u6570", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "ac3221169d282388cafdec38da8126d463207e21549bd5a0b862089e6edb27d3", "section_path": ["\u51fd\u6570"], "commit_groups": [["10fb48d66"]], "identity_text": "Add an optional missing_ok argument to the current_setting() function (David Christensen) This allows avoiding an error for an unrecognized parameter name, instead returning a NULL.", "commit_aliases": ["10fb48d66"], "source_commits": ["10fb48d66"], "source_entry_id": "9.6.0/changes/115", "db_id": "428d546f02cf43113e42f00645e67d75", "patch_ids": ["583c493cf12ecee95675e227bd13c637"], "statement_hash": "dbcf79172c3add16f89a1a9c3fece66be251be52c3dd741bae354c408dbae80e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-486b2853d424348d", "migration": false}, {"id": "9.6.0-fe115298f0c739c8", "cves": [], "html": "<p>\u66f4\u6539\u5404\u79cd\u76ee\u5f55\u68c0\u67e5\u51fd\u6570\u5bf9\u65e0\u6548\u8f93\u5165\u8fd4\u56de <code>NULL</code>\uff08Michael Paquier\uff09</p>\n<p><a href=\"/docs/9.6/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"\u8868\u00a09.62.\u00a0\u7cfb\u7edf\u76ee\u5f55\u4fe1\u606f\u51fd\u6570\"><code>pg_get_viewdef()</code></a> \u73b0\u5728\u7ed9\u5b9a\u65e0\u6548\u7684\u89c6\u56fe <code>OID</code> \u65f6\u8fd4\u56de <code>NULL</code>\uff0c\u51e0\u4e2a\u7c7b\u4f3c\u51fd\u6570\u5bf9\u574f\u8f93\u5165\u540c\u6837\u8fd4\u56de <code>NULL</code>\u3002\u4ee5\u524d\u8fd9\u79cd\u60c5\u51b5\u901a\u5e38\u5bfc\u81f4 <span>\u201c<span>cache lookup failed</span>\u201d</span> \u9519\u8bef\uff0c\u8fd9\u4e9b\u9519\u8bef\u672c\u4e0d\u5e94\u5728\u9762\u5411\u7528\u6237\u7684\u60c5\u51b5\u4e2d\u51fa\u73b0\u3002</p>", "text": "\u66f4\u6539\u5404\u79cd\u76ee\u5f55\u68c0\u67e5\u51fd\u6570\u5bf9\u65e0\u6548\u8f93\u5165\u8fd4\u56de NULL\uff08Michael Paquier\uff09 pg_get_viewdef() \u73b0\u5728\u7ed9\u5b9a\u65e0\u6548\u7684\u89c6\u56fe OID \u65f6\u8fd4\u56de NULL\uff0c\u51e0\u4e2a\u7c7b\u4f3c\u51fd\u6570\u5bf9\u574f\u8f93\u5165\u540c\u6837\u8fd4\u56de NULL\u3002\u4ee5\u524d\u8fd9\u79cd\u60c5\u51b5\u901a\u5e38\u5bfc\u81f4 \u201ccache lookup failed\u201d \u9519\u8bef\uff0c\u8fd9\u4e9b\u9519\u8bef\u672c\u4e0d\u5e94\u5728\u9762\u5411\u7528\u6237\u7684\u60c5\u51b5\u4e2d\u51fa\u73b0\u3002", "title": "\u66f4\u6539\u5404\u79cd\u76ee\u5f55\u68c0\u67e5\u51fd\u6570\u5bf9\u65e0\u6548\u8f93\u5165\u8fd4\u56de NULL", "commits": [], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "1cec6e408b13826961cc0cfc008177ad740b4fd356666322ca6d4e59d2d4638b", "section_path": ["\u51fd\u6570"], "commit_groups": [["3153b1a52"], ["8a8c6b538"], ["976b24fb4"]], "identity_text": "Change various catalog-inspection functions to return NULL for invalid input (Michael Paquier) pg_get_viewdef() now returns NULL if given an invalid view OID, and several similar functions likewise return NULL for bad input. Previously, such cases usually led to cache lookup failed errors, which are not meant to occur in user-facing cases.", "commit_aliases": ["3153b1a52", "8a8c6b538", "976b24fb4"], "source_commits": ["3153b1a52", "8a8c6b538", "976b24fb4"], "source_entry_id": "9.6.0/changes/116", "db_id": "b48792a3c5b1b128061cae2b4283287f", "patch_ids": ["1cccbfe875db3e881fbe92872abfc883", "b96d18c071f7d15462cfcbd245a72453", "cc96cb5e8c1c380bb8cc819d3c2c0e67"], "statement_hash": "0e9b73d122cde983fa203fcc353b1deed1b2bf0c3d12d95ed560230ac6846f28", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-fe115298f0c739c8", "migration": false}, {"id": "9.6.0-00fb7011cd2126f9", "cves": [], "html": "<p>\u4fee\u590d <a href=\"/docs/9.6/functions-admin.html#PG-REPLICATION-ORIGIN-XACT-RESET\"><code>pg_replication_origin_xact_reset()</code></a> \u4f7f\u4e4b\u4e0d\u5e26\u4efb\u4f55\u53c2\u6570\uff08Fujii Masao\uff09</p>\n<p>\u6587\u6863\u8bf4\u5b83\u6ca1\u6709\u53c2\u6570\uff0cC \u4ee3\u7801\u4e5f\u4e0d\u671f\u671b\u4efb\u4f55\u53c2\u6570\uff0c\u4f46 <code>pg_proc</code> \u4e2d\u7684\u6761\u76ee\u9519\u8bef\u5730\u6307\u5b9a\u4e86\u4e24\u4e2a\u53c2\u6570\u3002</p>", "text": "\u4fee\u590d pg_replication_origin_xact_reset() \u4f7f\u4e4b\u4e0d\u5e26\u4efb\u4f55\u53c2\u6570\uff08Fujii Masao\uff09 \u6587\u6863\u8bf4\u5b83\u6ca1\u6709\u53c2\u6570\uff0cC \u4ee3\u7801\u4e5f\u4e0d\u671f\u671b\u4efb\u4f55\u53c2\u6570\uff0c\u4f46 pg_proc \u4e2d\u7684\u6761\u76ee\u9519\u8bef\u5730\u6307\u5b9a\u4e86\u4e24\u4e2a\u53c2\u6570\u3002", "title": "\u4fee\u590d pg_replication_origin_xact_reset() \u4f7f\u4e4b\u4e0d\u5e26\u4efb\u4f55\u53c2\u6570", "commits": [], "section": "\u51fd\u6570", "category": "bugfix", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.9", "source_hash": "e885718ee4d3c82f09d95539755d925863736a83888f29bfe97e1042fd179378", "section_path": ["\u51fd\u6570"], "commit_groups": [["dd5eb805d"]], "identity_text": "Fix pg_replication_origin_xact_reset() to not have any arguments (Fujii Masao) The documentation said that it has no arguments, and the C code did not expect any arguments, but the entry in pg_proc mistakenly specified two arguments.", "commit_aliases": ["dd5eb805d"], "source_commits": ["dd5eb805d"], "source_entry_id": "9.6.0/changes/117", "db_id": "34eb14689f04c89a930663d253018303", "patch_ids": ["b861a9c50f15419e58f690a0bd678073"], "statement_hash": "52f1540d3c4dd444bcf271c33bcbb3f86427e8a4f7c4e2b06c6a6a77efe1b0cf", "relations": [], "category_label": "BUG \u4fee\u590d", "url": "/docs/compare/?release=9.6.0#9.6.0-00fb7011cd2126f9", "migration": false}, {"id": "9.6.0-4dc6e6c794aa692e", "cves": [], "html": "<p>\u5728 <a href=\"/docs/9.6/plpgsql.html\" title=\"\u7b2c\u00a041\u00a0\u7ae0\u00a0PL/pgSQL \u2014 SQL \u8fc7\u7a0b\u8bed\u8a00\">PL/pgSQL</a> \u4e2d\uff0c\u5728\u7f16\u8bd1\u51fd\u6570\u65f6\u68c0\u6d4b\u4e0d\u5339\u914d\u7684 <code>CONTINUE</code> \u548c <code>EXIT</code> \u8bed\u53e5\uff0c\u800c\u4e0d\u662f\u5728\u6267\u884c\u65f6\uff08Jim Nasby\uff09</p>", "text": "\u5728 PL/pgSQL \u4e2d\uff0c\u5728\u7f16\u8bd1\u51fd\u6570\u65f6\u68c0\u6d4b\u4e0d\u5339\u914d\u7684 CONTINUE \u548c EXIT \u8bed\u53e5\uff0c\u800c\u4e0d\u662f\u5728\u6267\u884c\u65f6\uff08Jim Nasby\uff09", "title": "\u5728 PL/pgSQL \u4e2d\uff0c\u5728\u7f16\u8bd1\u51fd\u6570\u65f6\u68c0\u6d4b\u4e0d\u5339\u914d\u7684 CONTINUE \u548c EXIT \u8bed\u53e5\uff0c\u800c\u4e0d\u662f\u5728\u6267\u884c\u65f6", "commits": [], "section": "\u670d\u52a1\u5668\u7aef\u8bed\u8a00", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.10", "source_hash": "ebe34b4193038c1faf762cf637a85756934b34d8d1ce85c991683c8c2404a881", "section_path": ["\u670d\u52a1\u5668\u7aef\u8bed\u8a00"], "commit_groups": [["fcdfce682"]], "identity_text": "In PL/pgSQL, detect mismatched CONTINUE and EXIT statements while compiling a function, rather than at execution time (Jim Nasby)", "commit_aliases": ["fcdfce682"], "source_commits": ["fcdfce682"], "source_entry_id": "9.6.0/changes/118", "db_id": "7393b1e1e19324b388941ffc4cb565f2", "patch_ids": ["350159cd4cd742a9cb382f6135cbcb0a"], "statement_hash": "cd96b2070feb04dd7f5e7922be0bd8f9ab71f6d16737e7bc39e9b897506bdf21", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-4dc6e6c794aa692e", "migration": false}, {"id": "9.6.0-0693ec90370ac31d", "cves": [], "html": "<p>\u6269\u5c55 <span>PL/Python</span> \u7684\u9519\u8bef\u62a5\u544a\u548c\u6d88\u606f\u62a5\u544a\u51fd\u6570\uff0c\u5141\u8bb8\u6307\u5b9a\u4e3b\u9519\u8bef\u6d88\u606f\u4e4b\u5916\u7684\u5176\u4ed6\u6d88\u606f\u5b57\u6bb5\uff08Pavel Stehule\uff09</p>", "text": "\u6269\u5c55 PL/Python \u7684\u9519\u8bef\u62a5\u544a\u548c\u6d88\u606f\u62a5\u544a\u51fd\u6570\uff0c\u5141\u8bb8\u6307\u5b9a\u4e3b\u9519\u8bef\u6d88\u606f\u4e4b\u5916\u7684\u5176\u4ed6\u6d88\u606f\u5b57\u6bb5\uff08Pavel Stehule\uff09", "title": "\u6269\u5c55 PL/Python \u7684\u9519\u8bef\u62a5\u544a\u548c\u6d88\u606f\u62a5\u544a\u51fd\u6570\uff0c\u5141\u8bb8\u6307\u5b9a\u4e3b\u9519\u8bef\u6d88\u606f\u4e4b\u5916\u7684\u5176\u4ed6\u6d88\u606f\u5b57\u6bb5", "commits": [], "section": "\u670d\u52a1\u5668\u7aef\u8bed\u8a00", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.10", "source_hash": "fa80f9774c7b19f0a2fa200146b28207b0d6e8afe7b955918c90c0e4fc14c53a", "section_path": ["\u670d\u52a1\u5668\u7aef\u8bed\u8a00"], "commit_groups": [["020140d84"], ["3a4a33ad4"], ["5c3c3cd0a"]], "identity_text": "Extend PL/Python's error-reporting and message-reporting functions to allow specifying additional message fields besides the primary error message (Pavel Stehule)", "commit_aliases": ["020140d84", "3a4a33ad4", "5c3c3cd0a"], "source_commits": ["020140d84", "3a4a33ad4", "5c3c3cd0a"], "source_entry_id": "9.6.0/changes/119", "db_id": "cbe50811444041c6cab2c79bf509af6d", "patch_ids": ["43341bbce5665f7abcc06f421b9e8a5d", "cbcf0a283e3e2eccac56dece4e5cae8c", "ce37bbd0db2e702ea4788a65587f3d49"], "statement_hash": "6d52d88d8f29219b04f3302050db6304547593a6f4d14efe109a17a150300d3b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-0693ec90370ac31d", "migration": false}, {"id": "9.6.0-e55fd65f4097b7c3", "cves": [], "html": "<p>\u5141\u8bb8 PL/Python \u51fd\u6570\u901a\u8fc7 <span>SPI</span> \u9012\u5f52\u8c03\u7528\u81ea\u8eab\uff0c\u5e76\u4fee\u590d\u5728\u4e00\u4e2a\u67e5\u8be2\u4e2d\u8c03\u7528\u591a\u4e2a\u8fd4\u56de\u96c6\u5408\u7684 PL/Python \u51fd\u6570\u65f6\u7684\u884c\u4e3a\uff08Alexey Grishchenko\u3001Tom Lane\uff09</p>", "text": "\u5141\u8bb8 PL/Python \u51fd\u6570\u901a\u8fc7 SPI \u9012\u5f52\u8c03\u7528\u81ea\u8eab\uff0c\u5e76\u4fee\u590d\u5728\u4e00\u4e2a\u67e5\u8be2\u4e2d\u8c03\u7528\u591a\u4e2a\u8fd4\u56de\u96c6\u5408\u7684 PL/Python \u51fd\u6570\u65f6\u7684\u884c\u4e3a\uff08Alexey Grishchenko\u3001Tom Lane\uff09", "title": "\u5141\u8bb8 PL/Python \u51fd\u6570\u901a\u8fc7 SPI \u9012\u5f52\u8c03\u7528\u81ea\u8eab\uff0c\u5e76\u4fee\u590d\u5728\u4e00\u4e2a\u67e5\u8be2\u4e2d\u8c03\u7528\u591a\u4e2a\u8fd4\u56de\u96c6\u5408\u7684 PL/Python \u51fd\u6570\u65f6\u7684\u884c\u4e3a", "commits": [], "section": "\u670d\u52a1\u5668\u7aef\u8bed\u8a00", "category": "bugfix", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.10", "source_hash": "aa880658dc42c3ccff6e775bd58770b14a67f46adb102a83748f64a43a088fca", "section_path": ["\u670d\u52a1\u5668\u7aef\u8bed\u8a00"], "commit_groups": [["1d2fe56e4"]], "identity_text": "Allow PL/Python functions to call themselves recursively via SPI, and fix the behavior when multiple set-returning PL/Python functions are called within one query (Alexey Grishchenko, Tom Lane)", "commit_aliases": ["1d2fe56e4"], "source_commits": ["1d2fe56e4"], "source_entry_id": "9.6.0/changes/120", "db_id": "0b6586eab56320a01271b57f37aef1c8", "patch_ids": ["a3607b1a9d7bdd261c43ac827ab5aaa0"], "statement_hash": "3e4f7f3fcc9482c659ba29f4925fc664fa2ddccc08423113fc73cfacb8f6714e", "relations": [], "category_label": "BUG \u4fee\u590d", "url": "/docs/compare/?release=9.6.0#9.6.0-e55fd65f4097b7c3", "migration": false}, {"id": "9.6.0-b2e772ce54b791f3", "cves": [], "html": "<p>\u4fee\u590d PL/Python \u4e2d\u7684\u4f1a\u8bdd\u751f\u547d\u5468\u671f\u5185\u5b58\u6cc4\u6f0f\uff08Heikki Linnakangas\u3001Haribabu Kommi\u3001Tom Lane\uff09</p>", "text": "\u4fee\u590d PL/Python \u4e2d\u7684\u4f1a\u8bdd\u751f\u547d\u5468\u671f\u5185\u5b58\u6cc4\u6f0f\uff08Heikki Linnakangas\u3001Haribabu Kommi\u3001Tom Lane\uff09", "title": "\u4fee\u590d PL/Python \u4e2d\u7684\u4f1a\u8bdd\u751f\u547d\u5468\u671f\u5185\u5b58\u6cc4\u6f0f", "commits": [], "section": "\u670d\u52a1\u5668\u7aef\u8bed\u8a00", "category": "bugfix", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.10", "source_hash": "40ae17a24fa2554b58e8f1f826f59074cc23e6c38711b3ec90e9bcbef033a71d", "section_path": ["\u670d\u52a1\u5668\u7aef\u8bed\u8a00"], "commit_groups": [["8c75ad436"]], "identity_text": "Fix session-lifespan memory leaks in PL/Python (Heikki Linnakangas, Haribabu Kommi, Tom Lane)", "commit_aliases": ["8c75ad436"], "source_commits": ["8c75ad436"], "source_entry_id": "9.6.0/changes/121", "db_id": "31df09355aaf03bfdba14a7539f64439", "patch_ids": ["941da1a73dc2af7424fb42aab880d094"], "statement_hash": "6afe387188602f261761163ffb3a215639736d3b0c5e75103c0e79007ec0c11e", "relations": [], "category_label": "BUG \u4fee\u590d", "url": "/docs/compare/?release=9.6.0#9.6.0-b2e772ce54b791f3", "migration": false}, {"id": "9.6.0-70b49df0f75e7432", "cves": [], "html": "<p>\u4f7f <span>PL/Tcl</span> \u73b0\u4ee3\u5316\uff0c\u4f7f\u7528 Tcl \u7684<span>\u201c<span>\u5bf9\u8c61</span>\u201d</span> <acronym>API</acronym> \u800c\u975e\u7b80\u5355\u5b57\u7b26\u4e32\uff08Jim Nasby\u3001Karl Lehenbauer\uff09</p>\n<p>\u8fd9\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\u53ef\u4ee5\u663e\u8457\u6539\u8fdb\u6027\u80fd\u3002\u6ce8\u610f <span>PL/Tcl</span> \u73b0\u5728\u8981\u6c42 Tcl 8.4 \u6216\u66f4\u65b0\u7248\u672c\u3002</p>", "text": "\u4f7f PL/Tcl \u73b0\u4ee3\u5316\uff0c\u4f7f\u7528 Tcl \u7684\u201c\u5bf9\u8c61\u201d API \u800c\u975e\u7b80\u5355\u5b57\u7b26\u4e32\uff08Jim Nasby\u3001Karl Lehenbauer\uff09 \u8fd9\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\u53ef\u4ee5\u663e\u8457\u6539\u8fdb\u6027\u80fd\u3002\u6ce8\u610f PL/Tcl \u73b0\u5728\u8981\u6c42 Tcl 8.4 \u6216\u66f4\u65b0\u7248\u672c\u3002", "title": "\u4f7f PL/Tcl \u73b0\u4ee3\u5316\uff0c\u4f7f\u7528 Tcl \u7684\u201c\u5bf9\u8c61\u201d API \u800c\u975e\u7b80\u5355\u5b57\u7b26\u4e32", "commits": [], "section": "\u670d\u52a1\u5668\u7aef\u8bed\u8a00", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.10", "source_hash": "462fe8a15295ca7dfe6b814505b15fa68c07696b60755977e0dcaf24faef831f", "section_path": ["\u670d\u52a1\u5668\u7aef\u8bed\u8a00"], "commit_groups": [["287822068"], ["e2609323e"]], "identity_text": "Modernize PL/Tcl to use Tcl's object APIs instead of simple strings (Jim Nasby, Karl Lehenbauer) This can improve performance substantially in some cases. Note that PL/Tcl now requires Tcl 8.4 or later.", "commit_aliases": ["287822068", "e2609323e"], "source_commits": ["287822068", "e2609323e"], "source_entry_id": "9.6.0/changes/122", "db_id": "292cf4dc73540711dcc7ed5372fc0462", "patch_ids": ["357fd7e56019965cd3c9072da871077c", "67cb8cf88b2051dfde2e594ca9044380"], "statement_hash": "184a4d2708cc622bebfacd4d995472f19aca15a05767d3f4e11557104fb31eb9", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-70b49df0f75e7432", "migration": false}, {"id": "9.6.0-35cf6158f69aa8cf", "cves": [], "html": "<p>\u5728 <span>PL/Tcl</span> \u4e2d\uff0c\u4f7f\u6570\u636e\u5e93\u62a5\u544a\u7684\u9519\u8bef\u5728 Tcl \u7684 <code>errorCode</code> \u5168\u5c40\u53d8\u91cf\u4e2d\u8fd4\u56de\u9644\u52a0\u4fe1\u606f\uff08Jim Nasby\u3001Tom Lane\uff09</p>\n<p>\u6b64\u7279\u6027\u9075\u5faa Tcl \u8fd4\u56de\u9519\u8bef\u8f85\u52a9\u6570\u636e\u7684\u60ef\u4f8b\u3002</p>", "text": "\u5728 PL/Tcl \u4e2d\uff0c\u4f7f\u6570\u636e\u5e93\u62a5\u544a\u7684\u9519\u8bef\u5728 Tcl \u7684 errorCode \u5168\u5c40\u53d8\u91cf\u4e2d\u8fd4\u56de\u9644\u52a0\u4fe1\u606f\uff08Jim Nasby\u3001Tom Lane\uff09 \u6b64\u7279\u6027\u9075\u5faa Tcl \u8fd4\u56de\u9519\u8bef\u8f85\u52a9\u6570\u636e\u7684\u60ef\u4f8b\u3002", "title": "\u5728 PL/Tcl \u4e2d\uff0c\u4f7f\u6570\u636e\u5e93\u62a5\u544a\u7684\u9519\u8bef\u5728 Tcl \u7684 errorCode \u5168\u5c40\u53d8\u91cf\u4e2d\u8fd4\u56de\u9644\u52a0\u4fe1\u606f", "commits": [], "section": "\u670d\u52a1\u5668\u7aef\u8bed\u8a00", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.10", "source_hash": "368daaad22e47037960d18a1a7872f28f6c5cbe360034fe940afe67a988206cd", "section_path": ["\u670d\u52a1\u5668\u7aef\u8bed\u8a00"], "commit_groups": [["cd37bb785"], ["fb8d2a7f5"]], "identity_text": "In PL/Tcl, make database-reported errors return additional information in Tcl's errorCode global variable (Jim Nasby, Tom Lane) This feature follows the Tcl convention for returning auxiliary data about an error.", "commit_aliases": ["cd37bb785", "fb8d2a7f5"], "source_commits": ["cd37bb785", "fb8d2a7f5"], "source_entry_id": "9.6.0/changes/123", "db_id": "d712afe9f172186d3b83a0c85c865f28", "patch_ids": ["ab6f52c2324d4a6e7044a3abca960cdf", "c9378db52b681bf8ce4a594b8b46ca61"], "statement_hash": "ee8af43f516953c8bf5ee57faf66eb978330ada5a5aa2c0b5591b9d832251fcf", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-35cf6158f69aa8cf", "migration": false}, {"id": "9.6.0-88acc8ebd176c87d", "cves": [], "html": "<p>\u4fee\u590d <span>PL/Tcl</span> \u5728\u6570\u636e\u5e93\u7f16\u7801\u548c <code>UTF-8</code>\uff08Tcl \u6240\u671f\u671b\u7684\uff09\u4e4b\u95f4\u6267\u884c\u7f16\u7801\u8f6c\u6362\uff08Tom Lane\uff09</p>\n<p>\u4ee5\u524d\u5b57\u7b26\u4e32\u4e0d\u7ecf\u8f6c\u6362\u76f4\u63a5\u4f20\u9012\uff0c\u5f53\u6570\u636e\u5e93\u7f16\u7801\u4e0d\u662f <code>UTF-8</code> \u65f6\u5bfc\u81f4\u975e <code>ASCII</code> \u5b57\u7b26\u7684\u9519\u8bef\u884c\u4e3a\u3002</p>", "text": "\u4fee\u590d PL/Tcl \u5728\u6570\u636e\u5e93\u7f16\u7801\u548c UTF-8\uff08Tcl \u6240\u671f\u671b\u7684\uff09\u4e4b\u95f4\u6267\u884c\u7f16\u7801\u8f6c\u6362\uff08Tom Lane\uff09 \u4ee5\u524d\u5b57\u7b26\u4e32\u4e0d\u7ecf\u8f6c\u6362\u76f4\u63a5\u4f20\u9012\uff0c\u5f53\u6570\u636e\u5e93\u7f16\u7801\u4e0d\u662f UTF-8 \u65f6\u5bfc\u81f4\u975e ASCII \u5b57\u7b26\u7684\u9519\u8bef\u884c\u4e3a\u3002", "title": "\u4fee\u590d PL/Tcl \u5728\u6570\u636e\u5e93\u7f16\u7801\u548c UTF-8\uff08Tcl \u6240\u671f\u671b\u7684\uff09\u4e4b\u95f4\u6267\u884c\u7f16\u7801\u8f6c\u6362", "commits": [], "section": "\u670d\u52a1\u5668\u7aef\u8bed\u8a00", "category": "bugfix", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.10", "source_hash": "02453e2434f24cd5dd783974e2a6705f41b5a3857952154a34409843125a8a5c", "section_path": ["\u670d\u52a1\u5668\u7aef\u8bed\u8a00"], "commit_groups": [["c8c7c93de"]], "identity_text": "Fix PL/Tcl to perform encoding conversion between the database encoding and UTF-8, which is what Tcl expects (Tom Lane) Previously, strings were passed through without conversion, leading to misbehavior with non-ASCII characters when the database encoding was not UTF-8.", "commit_aliases": ["c8c7c93de"], "source_commits": ["c8c7c93de"], "source_entry_id": "9.6.0/changes/124", "db_id": "d226887349d1542c336c0ff7dfab0ebb", "patch_ids": ["51e363035a7cb17586ca769a01e9fefc"], "statement_hash": "4e469b8a5b86aba1839067f125c60a3f87106b9b74a1a4d2269698aaafee658a", "relations": [], "category_label": "BUG \u4fee\u590d", "url": "/docs/compare/?release=9.6.0#9.6.0-88acc8ebd176c87d", "migration": false}, {"id": "9.6.0-ecace0234f348cc1", "cves": [], "html": "<p>\u5728\u9519\u8bef\u548c\u901a\u77e5\u6d88\u606f\u4e2d\u6dfb\u52a0 <a href=\"/docs/9.6/protocol-error-fields.html\" title=\"51.6.\u00a0\u9519\u8bef\u548c\u901a\u77e5\u6d88\u606f\u5b57\u6bb5\">severity \u5b57\u6bb5</a>\u7684\u672a\u672c\u5730\u5316\u7248\u672c\uff08Tom Lane\uff09</p>\n<p>\u6b64\u66f4\u6539\u5141\u8bb8\u5ba2\u6237\u7aef\u4ee3\u7801\u786e\u5b9a\u9519\u8bef\u6216\u901a\u77e5\u7684\u4e25\u91cd\u6027\uff0c\u800c\u4e0d\u5fc5\u62c5\u5fc3 severity \u5b57\u7b26\u4e32\u7684\u672c\u5730\u5316\u53d8\u4f53\u3002</p>", "text": "\u5728\u9519\u8bef\u548c\u901a\u77e5\u6d88\u606f\u4e2d\u6dfb\u52a0 severity \u5b57\u6bb5\u7684\u672a\u672c\u5730\u5316\u7248\u672c\uff08Tom Lane\uff09 \u6b64\u66f4\u6539\u5141\u8bb8\u5ba2\u6237\u7aef\u4ee3\u7801\u786e\u5b9a\u9519\u8bef\u6216\u901a\u77e5\u7684\u4e25\u91cd\u6027\uff0c\u800c\u4e0d\u5fc5\u62c5\u5fc3 severity \u5b57\u7b26\u4e32\u7684\u672c\u5730\u5316\u53d8\u4f53\u3002", "title": "\u5728\u9519\u8bef\u548c\u901a\u77e5\u6d88\u606f\u4e2d\u6dfb\u52a0 severity \u5b57\u6bb5\u7684\u672a\u672c\u5730\u5316\u7248\u672c", "commits": [], "section": "\u5ba2\u6237\u7aef\u63a5\u53e3", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.11", "source_hash": "d79205486a780f9af2372297a215892e94f0f9afeb462d2390c0d6d7fbd63065", "section_path": ["\u5ba2\u6237\u7aef\u63a5\u53e3"], "commit_groups": [["e796d0aba"]], "identity_text": "Add a nonlocalized version of the severity field in error and notice messages (Tom Lane) This change allows client code to determine severity of an error or notice without having to worry about localized variants of the severity strings.", "commit_aliases": ["e796d0aba"], "source_commits": ["e796d0aba"], "source_entry_id": "9.6.0/changes/125", "db_id": "a3a3e3bdf488a7e31453939e8824a996", "patch_ids": ["a9d52d6995619b0913f8ff02989e8071"], "statement_hash": "494c7a5af0d15cf55c6693bb685be1b5358a09ab34c431ec05ea220338bcd3e2", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-ecace0234f348cc1", "migration": false}, {"id": "9.6.0-e2a86ce963549df5", "cves": [], "html": "<p>\u5728 <span>libpq</span> \u4e2d\u5f15\u5165\u4e00\u9879\u7279\u6027\uff0c\u53ef\u4ee5\u59cb\u7ec8\u6216\u53ea\u5bf9\u975e\u9519\u8bef\u6d88\u606f\u6291\u5236\u6d88\u606f\u7684 <code>CONTEXT</code> \u5b57\u6bb5\uff08Pavel Stehule\uff09</p>\n<p><a href=\"/docs/9.6/libpq-status.html#LIBPQ-PQERRORMESSAGE\"><code>PQerrorMessage()</code></a> \u7684\u9ed8\u8ba4\u884c\u4e3a\u73b0\u5728\u53ea\u5bf9\u9519\u8bef\u6253\u5370 <code>CONTEXT</code>\u3002\u65b0\u51fd\u6570 <a href=\"/docs/9.6/libpq-control.html#LIBPQ-PQSETERRORCONTEXTVISIBILITY\"><code>PQsetErrorContextVisibility()</code></a> \u53ef\u7528\u4e8e\u8c03\u6574\u8fd9\u4e00\u70b9\u3002</p>", "text": "\u5728 libpq \u4e2d\u5f15\u5165\u4e00\u9879\u7279\u6027\uff0c\u53ef\u4ee5\u59cb\u7ec8\u6216\u53ea\u5bf9\u975e\u9519\u8bef\u6d88\u606f\u6291\u5236\u6d88\u606f\u7684 CONTEXT \u5b57\u6bb5\uff08Pavel Stehule\uff09 PQerrorMessage() \u7684\u9ed8\u8ba4\u884c\u4e3a\u73b0\u5728\u53ea\u5bf9\u9519\u8bef\u6253\u5370 CONTEXT\u3002\u65b0\u51fd\u6570 PQsetErrorContextVisibility() \u53ef\u7528\u4e8e\u8c03\u6574\u8fd9\u4e00\u70b9\u3002", "title": "\u5728 libpq \u4e2d\u5f15\u5165\u4e00\u9879\u7279\u6027\uff0c\u53ef\u4ee5\u59cb\u7ec8\u6216\u53ea\u5bf9\u975e\u9519\u8bef\u6d88\u606f\u6291\u5236\u6d88\u606f\u7684 CONTEXT \u5b57\u6bb5", "commits": [], "section": "\u5ba2\u6237\u7aef\u63a5\u53e3", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.11", "source_hash": "e21b25c86a8c259b6c3b6b1f18ac2b47effef1c3c36c456a935f74a26675dcaf", "section_path": ["\u5ba2\u6237\u7aef\u63a5\u53e3"], "commit_groups": [["0426f349e"]], "identity_text": "Introduce a feature in libpq whereby the CONTEXT field of messages can be suppressed, either always or only for non-error messages (Pavel Stehule) The default behavior of PQerrorMessage() is now to print CONTEXT only for errors. The new function PQsetErrorContextVisibility() can be used to adjust this.", "commit_aliases": ["0426f349e"], "source_commits": ["0426f349e"], "source_entry_id": "9.6.0/changes/126", "db_id": "38f5670a2a48e398fc5f56296717be27", "patch_ids": ["d674faf49d479be5cc744274d9634d04"], "statement_hash": "21851571063284dcd4eb5e47caa1862830e0479585af2896f60bc48c06369b8e", "relations": [{"rule": 2, "type": "related", "target": "170b1fefcffcedda9461e5d56803fec1", "evidence": {"same_day": true, "patch_ids": ["d674faf49d479be5cc744274d9634d04"], "ambiguous_patch_ids": ["d674faf49d479be5cc744274d9634d04"]}}, {"rule": 2, "type": "related", "target": "3ce123ea6c2d6bd34288d178655446b8", "evidence": {"same_day": true, "patch_ids": ["d674faf49d479be5cc744274d9634d04"], "ambiguous_patch_ids": ["d674faf49d479be5cc744274d9634d04"]}}], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-e2a86ce963549df5", "migration": false}, {"id": "9.6.0-4af9085e630bc127", "cves": [], "html": "<p>\u5728 <span>libpq</span> \u4e2d\u6dfb\u52a0\u4ee5\u4e0d\u540c\u8be6\u7ec6\u7ea7\u522b\u91cd\u65b0\u751f\u6210\u9519\u8bef\u6d88\u606f\u7684\u652f\u6301\uff08Alex Shulgin\uff09</p>\n<p>\u8fd9\u901a\u8fc7\u65b0\u51fd\u6570 <a href=\"/docs/9.6/libpq-exec.html#LIBPQ-PQRESULTVERBOSEERRORMESSAGE\"><code>PQresultVerboseErrorMessage()</code></a> \u5b8c\u6210\u3002\u8fd9\u652f\u6301 <span>psql</span> \u7684\u65b0 <code>\\errverbose</code> \u7279\u6027\uff0c\u5bf9\u5176\u4ed6\u5ba2\u6237\u7aef\u4e5f\u53ef\u80fd\u6709\u7528\u3002</p>", "text": "\u5728 libpq \u4e2d\u6dfb\u52a0\u4ee5\u4e0d\u540c\u8be6\u7ec6\u7ea7\u522b\u91cd\u65b0\u751f\u6210\u9519\u8bef\u6d88\u606f\u7684\u652f\u6301\uff08Alex Shulgin\uff09 \u8fd9\u901a\u8fc7\u65b0\u51fd\u6570 PQresultVerboseErrorMessage() \u5b8c\u6210\u3002\u8fd9\u652f\u6301 psql \u7684\u65b0 \\errverbose \u7279\u6027\uff0c\u5bf9\u5176\u4ed6\u5ba2\u6237\u7aef\u4e5f\u53ef\u80fd\u6709\u7528\u3002", "title": "\u5728 libpq \u4e2d\u6dfb\u52a0\u4ee5\u4e0d\u540c\u8be6\u7ec6\u7ea7\u522b\u91cd\u65b0\u751f\u6210\u9519\u8bef\u6d88\u606f\u7684\u652f\u6301", "commits": [], "section": "\u5ba2\u6237\u7aef\u63a5\u53e3", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.11", "source_hash": "48efdc386c7a390ddfb7aca6327d4fa8f661dcb759aa9fc94611716e63dd882a", "section_path": ["\u5ba2\u6237\u7aef\u63a5\u53e3"], "commit_groups": [["e3161b231"]], "identity_text": "Add support in libpq for regenerating an error message with a different verbosity level (Alex Shulgin) This is done with the new function PQresultVerboseErrorMessage(). This supports psql's new \\errverbose feature, and may be useful for other clients as well.", "commit_aliases": ["e3161b231"], "source_commits": ["e3161b231"], "source_entry_id": "9.6.0/changes/127", "db_id": "ad94c6683ee6a1faf7cb154d3ff6711b", "patch_ids": ["8f4a9d1fda9ed1bf0a52df7f8977651f"], "statement_hash": "305ae249329a2cdaa83974d6df698d8e4d6cb8bd09df82f5f6d9f802e6a4847b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-4af9085e630bc127", "migration": false}, {"id": "9.6.0-dcaacbe7d2a7bd92", "cves": [], "html": "<p>\u6539\u8fdb <span>libpq</span> \u7684 <a href=\"/docs/9.6/libpq-status.html#LIBPQ-PQHOST\"><code>PQhost()</code></a> \u51fd\u6570\uff0c\u4e3a\u9ed8\u8ba4 Unix \u5957\u63a5\u5b57\u8fde\u63a5\u8fd4\u56de\u6709\u7528\u6570\u636e\uff08Tom Lane\uff09</p>\n<p>\u4ee5\u524d\u5982\u679c\u6ca1\u6709\u7ed9\u51fa\u663e\u5f0f\u4e3b\u673a\u8bf4\u660e\u5b83\u4f1a\u8fd4\u56de <code>NULL</code>\uff1b\u73b0\u5728\u8fd4\u56de\u9ed8\u8ba4\u5957\u63a5\u5b57\u76ee\u5f55\u8def\u5f84\u3002</p>", "text": "\u6539\u8fdb libpq \u7684 PQhost() \u51fd\u6570\uff0c\u4e3a\u9ed8\u8ba4 Unix \u5957\u63a5\u5b57\u8fde\u63a5\u8fd4\u56de\u6709\u7528\u6570\u636e\uff08Tom Lane\uff09 \u4ee5\u524d\u5982\u679c\u6ca1\u6709\u7ed9\u51fa\u663e\u5f0f\u4e3b\u673a\u8bf4\u660e\u5b83\u4f1a\u8fd4\u56de NULL\uff1b\u73b0\u5728\u8fd4\u56de\u9ed8\u8ba4\u5957\u63a5\u5b57\u76ee\u5f55\u8def\u5f84\u3002", "title": "\u6539\u8fdb libpq \u7684 PQhost() \u51fd\u6570\uff0c\u4e3a\u9ed8\u8ba4 Unix \u5957\u63a5\u5b57\u8fde\u63a5\u8fd4\u56de\u6709\u7528\u6570\u636e", "commits": [], "section": "\u5ba2\u6237\u7aef\u63a5\u53e3", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.11", "source_hash": "883dfde45ce492aee93d177718e7ae3b1b9e157b3dd52fa0c5d3f1a445147ad5", "section_path": ["\u5ba2\u6237\u7aef\u63a5\u53e3"], "commit_groups": [["40cb21f70"]], "identity_text": "Improve libpq's PQhost() function to return useful data for default Unix-socket connections (Tom Lane) Previously it would return NULL if no explicit host specification had been given; now it returns the default socket directory path.", "commit_aliases": ["40cb21f70"], "source_commits": ["40cb21f70"], "source_entry_id": "9.6.0/changes/128", "db_id": "e62c510f496d49ef000d5aded9a2045d", "patch_ids": ["bb7708d2ae3405e46ea3740e21d1ef21"], "statement_hash": "66994ee82c693dbcffc003e648957e3a75bf096e105155db6658239fd413206c", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-dcaacbe7d2a7bd92", "migration": false}, {"id": "9.6.0-5c60674c2108ce7d", "cves": [], "html": "<p>\u4fee\u590d <span>ecpg</span> \u7684\u8bcd\u6cd5\u5206\u6790\u5668\u5904\u7406\u9884\u5904\u7406\u6307\u4ee4\u884c\u4e0a\u6ce8\u91ca\u4e2d\u7684\u6362\u884c\uff08Michael Meskes\uff09</p>", "text": "\u4fee\u590d ecpg \u7684\u8bcd\u6cd5\u5206\u6790\u5668\u5904\u7406\u9884\u5904\u7406\u6307\u4ee4\u884c\u4e0a\u6ce8\u91ca\u4e2d\u7684\u6362\u884c\uff08Michael Meskes\uff09", "title": "\u4fee\u590d ecpg \u7684\u8bcd\u6cd5\u5206\u6790\u5668\u5904\u7406\u9884\u5904\u7406\u6307\u4ee4\u884c\u4e0a\u6ce8\u91ca\u4e2d\u7684\u6362\u884c", "commits": [], "section": "\u5ba2\u6237\u7aef\u63a5\u53e3", "category": "bugfix", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.11", "source_hash": "5c3ad047d3413f9780c407ca793c569ad0eb00c01e87af840aff1a35198ccb03", "section_path": ["\u5ba2\u6237\u7aef\u63a5\u53e3"], "commit_groups": [["fc1ae7d2e"]], "identity_text": "Fix ecpg's lexer to handle line breaks within comments starting on preprocessor directive lines (Michael Meskes)", "commit_aliases": ["fc1ae7d2e"], "source_commits": ["fc1ae7d2e"], "source_entry_id": "9.6.0/changes/129", "db_id": "2788096b88f0732de85b79faa631852e", "patch_ids": ["a6c0b9239e8b0e2d54603d15dca251f5"], "statement_hash": "7b281e13956fff6e007facdb464b91ad9a918a9b66987b587e3ae4c9b6ca1fbe", "relations": [], "category_label": "BUG \u4fee\u590d", "url": "/docs/compare/?release=9.6.0#9.6.0-5c60674c2108ce7d", "migration": false}, {"id": "9.6.0-5785c6dde2a8a489", "cves": [], "html": "<p>\u4e3a<a href=\"/docs/9.6/app-pgdump.html\" title=\"pg_dump\"><span>pg_dump</span></a>\u548c<a href=\"/docs/9.6/app-pgrestore.html\" title=\"pg_restore\"><span>pg_restore</span></a>\u6dfb\u52a0 <code>--strict-names</code> \u9009\u9879\uff08Pavel Stehule\uff09</p>\n<p>\u6b64\u9009\u9879\u4f7f\u7a0b\u5e8f\u5728 <code>-t</code> \u6216 <code>-n</code> \u9009\u9879\u6ca1\u6709\u5339\u914d\u65f6\u62a5\u6028\uff0c\u800c\u4e0d\u662f\u9759\u9ed8\u5730\u4e0d\u505a\u4efb\u4f55\u4e8b\u3002</p>", "text": "\u4e3apg_dump\u548cpg_restore\u6dfb\u52a0 --strict-names \u9009\u9879\uff08Pavel Stehule\uff09 \u6b64\u9009\u9879\u4f7f\u7a0b\u5e8f\u5728 -t \u6216 -n \u9009\u9879\u6ca1\u6709\u5339\u914d\u65f6\u62a5\u6028\uff0c\u800c\u4e0d\u662f\u9759\u9ed8\u5730\u4e0d\u505a\u4efb\u4f55\u4e8b\u3002", "title": "\u4e3apg_dump\u548cpg_restore\u6dfb\u52a0 --strict-names \u9009\u9879", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12", "source_hash": "d4e1e15ae2e140a0eb43696360bc39eb0bd62e524dbbc5d0943dc98d494538e0", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["d02426029"]], "identity_text": "Add a --strict-names option to pg_dump and pg_restore (Pavel Stehule) This option causes the program to complain if there is no match for a -t or -n option, rather than silently doing nothing.", "commit_aliases": ["d02426029"], "source_commits": ["d02426029"], "source_entry_id": "9.6.0/changes/130", "db_id": "1bf80ab0f55accc82e8a808f66857909", "patch_ids": ["58f518be859c58970ed6690609938a22"], "statement_hash": "36cfcf0d969bd9b38a5f5f7106e30123494240e124998c878ee51eee0d676a1f", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-5785c6dde2a8a489", "migration": false}, {"id": "9.6.0-2c42028e9bedfa66", "cves": [], "html": "<p>\u5728 <span>pg_dump</span> \u4e2d\uff0c\u8f6c\u50a8\u5bf9\u7cfb\u7edf\u5bf9\u8c61\u7684\u672c\u5730\u6743\u9650\u5206\u914d\u66f4\u6539\uff08Stephen Frost\uff09</p>\n<p>\u867d\u7136\u8d85\u7ea7user\u603b\u662f\u53ef\u4ee5\u66f4\u6539\u5185\u5efa\u6216\u6269\u5c55\u521b\u5efa\u5bf9\u8c61\u7684\u6743\u9650\u5206\u914d\uff0c\u4f46\u8fd9\u79cd\u66f4\u6539\u4ee5\u524d\u5728\u8f6c\u50a8\u548c\u91cd\u65b0\u88c5\u8f7d\u4e2d\u4e22\u5931\u3002\u73b0\u5728 <span>pg_dump</span> \u8bc6\u522b\u5e76\u8f6c\u50a8\u8fd9\u79cd\u66f4\u6539\u3002\uff08\u4f46\u8fd9\u53ea\u5728\u4ece 9.6 \u6216\u66f4\u665a\u670d\u52a1\u5668\u8f6c\u50a8\u65f6\u6709\u6548\u3002\uff09</p>", "text": "\u5728 pg_dump \u4e2d\uff0c\u8f6c\u50a8\u5bf9\u7cfb\u7edf\u5bf9\u8c61\u7684\u672c\u5730\u6743\u9650\u5206\u914d\u66f4\u6539\uff08Stephen Frost\uff09 \u867d\u7136\u8d85\u7ea7user\u603b\u662f\u53ef\u4ee5\u66f4\u6539\u5185\u5efa\u6216\u6269\u5c55\u521b\u5efa\u5bf9\u8c61\u7684\u6743\u9650\u5206\u914d\uff0c\u4f46\u8fd9\u79cd\u66f4\u6539\u4ee5\u524d\u5728\u8f6c\u50a8\u548c\u91cd\u65b0\u88c5\u8f7d\u4e2d\u4e22\u5931\u3002\u73b0\u5728 pg_dump \u8bc6\u522b\u5e76\u8f6c\u50a8\u8fd9\u79cd\u66f4\u6539\u3002\uff08\u4f46\u8fd9\u53ea\u5728\u4ece 9.6 \u6216\u66f4\u665a\u670d\u52a1\u5668\u8f6c\u50a8\u65f6\u6709\u6548\u3002\uff09", "title": "\u5728 pg_dump \u4e2d\uff0c\u8f6c\u50a8\u5bf9\u7cfb\u7edf\u5bf9\u8c61\u7684\u672c\u5730\u6743\u9650\u5206\u914d\u66f4\u6539", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12", "source_hash": "d3ed9efe38a355f2a40c1c71a70fb407a0d1a99966214529b9d9ca5996624ff3", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["23f34fa4b"], ["5d589993c"], ["a9f0e8e5a"], ["d217b2c36"], ["e1b120a8c"]], "identity_text": "In pg_dump, dump locally-made changes of privilege assignments for system objects (Stephen Frost) While it has always been possible for a superuser to change the privilege assignments for built-in or extension-created objects, such changes were formerly lost in a dump and reload. Now, pg_dump recognizes and dumps such changes. (This works only when dumping from a 9.6 or later server, however.)", "commit_aliases": ["23f34fa4b", "5d589993c", "a9f0e8e5a", "d217b2c36", "e1b120a8c"], "source_commits": ["23f34fa4b", "5d589993c", "a9f0e8e5a", "d217b2c36", "e1b120a8c"], "source_entry_id": "9.6.0/changes/131", "db_id": "142ca0a40b457ad1a24e1409f08d8db7", "patch_ids": ["1a0e24e598e96ffcce8ce98651a4642c", "26f9cf7d18d482b0943ac7665a2e0ee5", "4a80b996959f79fbdf6023b9b6efc64b", "99902c0c7312000e26027171d3590a6b", "999f276322a117aeab6d1d38a3d02ffc"], "statement_hash": "b76eba8cf54112ee6a1c06e3b8714c55d0b2a2cdb456c648271357191e9af1e9", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-2c42028e9bedfa66", "migration": false}, {"id": "9.6.0-196da4f46b703b0e", "cves": [], "html": "<p>\u5141\u8bb8 <span>pg_dump</span> \u8f6c\u50a8\u6269\u5c55\u62e5\u6709\u7684\u6a21\u5f0f\u4e2d\u7684\u975e\u6269\u5c55\u62e5\u6709\u5bf9\u8c61\uff08Mart\u00edn Marqu\u00e9s\uff09</p>\n<p>\u4ee5\u524d\u8fd9\u79cd\u5bf9\u8c61\u88ab\u5ffd\u7565\uff0c\u56e0\u4e3a\u88ab\u9519\u8bef\u5730\u5047\u5b9a\u5c5e\u4e8e\u62e5\u6709\u5176\u6a21\u5f0f\u7684\u6269\u5c55\u3002</p>", "text": "\u5141\u8bb8 pg_dump \u8f6c\u50a8\u6269\u5c55\u62e5\u6709\u7684\u6a21\u5f0f\u4e2d\u7684\u975e\u6269\u5c55\u62e5\u6709\u5bf9\u8c61\uff08Mart\u00edn Marqu\u00e9s\uff09 \u4ee5\u524d\u8fd9\u79cd\u5bf9\u8c61\u88ab\u5ffd\u7565\uff0c\u56e0\u4e3a\u88ab\u9519\u8bef\u5730\u5047\u5b9a\u5c5e\u4e8e\u62e5\u6709\u5176\u6a21\u5f0f\u7684\u6269\u5c55\u3002", "title": "\u5141\u8bb8 pg_dump \u8f6c\u50a8\u6269\u5c55\u62e5\u6709\u7684\u6a21\u5f0f\u4e2d\u7684\u975e\u6269\u5c55\u62e5\u6709\u5bf9\u8c61", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12", "source_hash": "c2284af97cd92606c14cdcb7d4b5bb10c48e4eaced6b0c4ef91aac4fd1f18785", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["31eb14504"]], "identity_text": "Allow pg_dump to dump non-extension-owned objects that are within an extension-owned schema (Mart\u00edn Marqu\u00e9s) Previously such objects were ignored because they were mistakenly assumed to belong to the extension owning their schema.", "commit_aliases": ["31eb14504"], "source_commits": ["31eb14504"], "source_entry_id": "9.6.0/changes/132", "db_id": "64e402daa5f824d8c890f64d278a5ccb", "patch_ids": ["b056468fb15a63e1af2c10c1c8449cbd"], "statement_hash": "4e422c8487740d2f57a1e287fe45f88935b493d43a83c645e797768f3ee2445f", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-196da4f46b703b0e", "migration": false}, {"id": "9.6.0-08f9fc4f44d94379", "cves": [], "html": "<p>\u5728 <span>pg_dump</span> \u8f93\u51fa\u4e2d\uff0c\u5bf9\u53ea\u5728\u6bcf\u8868\u5185\u552f\u4e00\u547d\u540d\u7684\u5bf9\u8c61\u7c7b\u578b\uff08\u4f8b\u5982\u89e6\u53d1\u5668\uff09\u7684\u5bf9\u8c61\u6807\u8bb0\u4e2d\u5305\u542b\u8868\u540d\uff08Peter Eisentraut\uff09</p>", "text": "\u5728 pg_dump \u8f93\u51fa\u4e2d\uff0c\u5bf9\u53ea\u5728\u6bcf\u8868\u5185\u552f\u4e00\u547d\u540d\u7684\u5bf9\u8c61\u7c7b\u578b\uff08\u4f8b\u5982\u89e6\u53d1\u5668\uff09\u7684\u5bf9\u8c61\u6807\u8bb0\u4e2d\u5305\u542b\u8868\u540d\uff08Peter Eisentraut\uff09", "title": "\u5728 pg_dump \u8f93\u51fa\u4e2d\uff0c\u5bf9\u53ea\u5728\u6bcf\u8868\u5185\u552f\u4e00\u547d\u540d\u7684\u5bf9\u8c61\u7c7b\u578b\uff08\u4f8b\u5982\u89e6\u53d1\u5668\uff09\u7684\u5bf9\u8c61\u6807\u8bb0\u4e2d\u5305\u542b\u8868\u540d", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12", "source_hash": "1f8747a211e644794b8d1c8608152a7afca52a86f6b829d62f219c524affffb7", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["3b3fcc4ee"]], "identity_text": "In pg_dump output, include the table name in object tags for object types that are only uniquely named per-table (for example, triggers) (Peter Eisentraut)", "commit_aliases": ["3b3fcc4ee"], "source_commits": ["3b3fcc4ee"], "source_entry_id": "9.6.0/changes/133", "db_id": "9ac1d4e547c515fdc4ecc8882afc32d5", "patch_ids": ["d0ecb13d5b312d63f7ae41e86712210d"], "statement_hash": "4952f5e0ebf88aa7babd8698d3da2c8c17d524f0fd24f70f85d56c7659cc726f", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-08f9fc4f44d94379", "migration": false}, {"id": "9.6.0-0f237b1a49997674", "cves": [], "html": "<p>\u652f\u6301\u591a\u4e2a <code>-c</code> \u548c <code>-f</code> \u547d\u4ee4\u884c\u9009\u9879\uff08Pavel Stehule\u3001Catalin Iacob\uff09</p>\n<p>\u6307\u5b9a\u7684\u64cd\u4f5c\u6309\u7ed9\u51fa\u9009\u9879\u7684\u987a\u5e8f\u6267\u884c\uff0c\u7136\u540e <span>psql</span> \u7ec8\u6b62\u3002</p>", "text": "\u652f\u6301\u591a\u4e2a -c \u548c -f \u547d\u4ee4\u884c\u9009\u9879\uff08Pavel Stehule\u3001Catalin Iacob\uff09 \u6307\u5b9a\u7684\u64cd\u4f5c\u6309\u7ed9\u51fa\u9009\u9879\u7684\u987a\u5e8f\u6267\u884c\uff0c\u7136\u540e psql \u7ec8\u6b62\u3002", "title": "\u652f\u6301\u591a\u4e2a -c \u548c -f \u547d\u4ee4\u884c\u9009\u9879", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "a6b87235492e0727d5ef2688852d2d29fa775112e843595d9a107b2f98bd22ed", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["d5563d7df"]], "identity_text": "Support multiple -c and -f command-line options (Pavel Stehule, Catalin Iacob) The specified operations are carried out in the order in which the options are given, and then psql terminates.", "commit_aliases": ["d5563d7df"], "source_commits": ["d5563d7df"], "source_entry_id": "9.6.0/changes/134", "db_id": "a00cd5070d8809c80e20264fef692640", "patch_ids": ["d44cc20a573665822f6c5b3fb2de7086"], "statement_hash": "43ae0499f1f2e7df22ed6d6d1204117f6a21ec435e4b53869f009d78e11c7c25", "relations": [{"rule": 2, "type": "related", "target": "fc511d32b5b42f2b7b4101c635c29f52", "evidence": {"same_day": true, "patch_ids": ["d44cc20a573665822f6c5b3fb2de7086"]}}], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-0f237b1a49997674", "migration": false}, {"id": "9.6.0-9bc6925afc3b8840", "cves": [], "html": "<p>\u6dfb\u52a0\u4ee5\u4ea4\u53c9\u8868\u663e\u793a\u6253\u5370\u67e5\u8be2\u7ed3\u679c\u7684 <code>\\crosstabview</code> \u547d\u4ee4\uff08Daniel V\u00e9rit\u00e9\uff09</p>\n<p>\u5728\u4ea4\u53c9\u8868\u663e\u793a\u4e2d\uff0c\u6765\u81ea\u4e00\u4e2a\u67e5\u8be2\u7ed3\u679c\u5217\u7684\u6570\u636e\u503c\u88ab\u653e\u5728\u4e00\u4e2a\u7f51\u683c\u4e2d\uff0c\u5176\u5217\u548c\u884c\u6807\u9898\u6765\u81ea\u5176\u4ed6\u67e5\u8be2\u7ed3\u679c\u5217\u3002</p>", "text": "\u6dfb\u52a0\u4ee5\u4ea4\u53c9\u8868\u663e\u793a\u6253\u5370\u67e5\u8be2\u7ed3\u679c\u7684 \\crosstabview \u547d\u4ee4\uff08Daniel V\u00e9rit\u00e9\uff09 \u5728\u4ea4\u53c9\u8868\u663e\u793a\u4e2d\uff0c\u6765\u81ea\u4e00\u4e2a\u67e5\u8be2\u7ed3\u679c\u5217\u7684\u6570\u636e\u503c\u88ab\u653e\u5728\u4e00\u4e2a\u7f51\u683c\u4e2d\uff0c\u5176\u5217\u548c\u884c\u6807\u9898\u6765\u81ea\u5176\u4ed6\u67e5\u8be2\u7ed3\u679c\u5217\u3002", "title": "\u6dfb\u52a0\u4ee5\u4ea4\u53c9\u8868\u663e\u793a\u6253\u5370\u67e5\u8be2\u7ed3\u679c\u7684 \\crosstabview \u547d\u4ee4", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "581566586196ac7b2c91d05c07620e4557ec7a00d1b12cb9747ff7cb2cb36121", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["c09b18f21"]], "identity_text": "Add a \\crosstabview command that prints the results of a query in a cross-tabulated display (Daniel V\u00e9rit\u00e9) In the crosstab display, data values from one query result column are placed in a grid whose column and row headers come from other query result columns.", "commit_aliases": ["c09b18f21"], "source_commits": ["c09b18f21"], "source_entry_id": "9.6.0/changes/135", "db_id": "99b44967b787fc4880b59d893f9ef1eb", "patch_ids": ["389a608e7f10beb766c810954e8247aa"], "statement_hash": "5819b47c4fe96136ccb910dcc47e206173d991771da05c3439254f9160db633a", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-9bc6925afc3b8840", "migration": false}, {"id": "9.6.0-6d10ddda2369fc47", "cves": [], "html": "<p>\u6dfb\u52a0\u4ee5\u5b8c\u6574\u8be6\u7ec6\u7a0b\u5ea6\u663e\u793a\u6700\u540e\u4e00\u4e2a\u670d\u52a1\u5668\u9519\u8bef\u7684 <code>\\errverbose</code> \u547d\u4ee4\uff08Alex Shulgin\uff09</p>\n<p>\u8fd9\u5728\u5f97\u5230\u610f\u5916\u9519\u8bef\u4e4b\u540e\u5f88\u6709\u7528\u2014\u2014\u4e0d\u518d\u9700\u8981\u8c03\u6574 <code>VERBOSITY</code> \u53d8\u91cf\u5e76\u91cd\u73b0\u5931\u8d25\u6765\u67e5\u770b\u9ed8\u8ba4\u4e0d\u663e\u793a\u7684\u9519\u8bef\u5b57\u6bb5\u3002</p>", "text": "\u6dfb\u52a0\u4ee5\u5b8c\u6574\u8be6\u7ec6\u7a0b\u5ea6\u663e\u793a\u6700\u540e\u4e00\u4e2a\u670d\u52a1\u5668\u9519\u8bef\u7684 \\errverbose \u547d\u4ee4\uff08Alex Shulgin\uff09 \u8fd9\u5728\u5f97\u5230\u610f\u5916\u9519\u8bef\u4e4b\u540e\u5f88\u6709\u7528\u2014\u2014\u4e0d\u518d\u9700\u8981\u8c03\u6574 VERBOSITY \u53d8\u91cf\u5e76\u91cd\u73b0\u5931\u8d25\u6765\u67e5\u770b\u9ed8\u8ba4\u4e0d\u663e\u793a\u7684\u9519\u8bef\u5b57\u6bb5\u3002", "title": "\u6dfb\u52a0\u4ee5\u5b8c\u6574\u8be6\u7ec6\u7a0b\u5ea6\u663e\u793a\u6700\u540e\u4e00\u4e2a\u670d\u52a1\u5668\u9519\u8bef\u7684 \\errverbose \u547d\u4ee4", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "a29d495ca8815ce832d497be3b732c92cb3befdc1cdc901dfe77586109fdb7be", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["3cc38ca7d"]], "identity_text": "Add an \\errverbose command that shows the last server error at full verbosity (Alex Shulgin) This is useful after getting an unexpected error \u2014 you no longer need to adjust the VERBOSITY variable and recreate the failure in order to see error fields that are not shown by default.", "commit_aliases": ["3cc38ca7d"], "source_commits": ["3cc38ca7d"], "source_entry_id": "9.6.0/changes/136", "db_id": "f65aea8a9f7830d41e78308e6d581d6c", "patch_ids": ["2053351b9390efd4d211c7613aa93408"], "statement_hash": "b49fa0fc4592037f44760c1d3219bc451a787cc7006c1c59013f2478f9913306", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-6d10ddda2369fc47", "migration": false}, {"id": "9.6.0-5633ca407d553c96", "cves": [], "html": "<p>\u6dfb\u52a0\u7528\u4e8e\u7f16\u8f91\u548c\u663e\u793a\u89c6\u56fe\u5b9a\u4e49\u7684 <code>\\ev</code> \u548c <code>\\sv</code> \u547d\u4ee4\uff08Petr Korobeinikov\uff09</p>\n<p>\u5b83\u4eec\u4e0e\u73b0\u6709\u7684\u7528\u4e8e\u51fd\u6570\u7684 <code>\\ef</code> \u548c <code>\\sf</code> \u547d\u4ee4\u5e73\u884c\u3002</p>", "text": "\u6dfb\u52a0\u7528\u4e8e\u7f16\u8f91\u548c\u663e\u793a\u89c6\u56fe\u5b9a\u4e49\u7684 \\ev \u548c \\sv \u547d\u4ee4\uff08Petr Korobeinikov\uff09 \u5b83\u4eec\u4e0e\u73b0\u6709\u7684\u7528\u4e8e\u51fd\u6570\u7684 \\ef \u548c \\sf \u547d\u4ee4\u5e73\u884c\u3002", "title": "\u6dfb\u52a0\u7528\u4e8e\u7f16\u8f91\u548c\u663e\u793a\u89c6\u56fe\u5b9a\u4e49\u7684 \\ev \u548c \\sv \u547d\u4ee4", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "b630a27c5e251225fd0dfa70b352147c6211f126b1ca3a359dcb5a636b9d78de", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["8eb6407aa"], ["9b66aa006"]], "identity_text": "Add \\ev and \\sv commands for editing and showing view definitions (Petr Korobeinikov) These are parallel to the existing \\ef and \\sf commands for functions.", "commit_aliases": ["8eb6407aa", "9b66aa006"], "source_commits": ["8eb6407aa", "9b66aa006"], "source_entry_id": "9.6.0/changes/137", "db_id": "83abb57c3a2f2468865b62d467be1f8a", "patch_ids": ["3868372185aa6c6aeab2923ea526fa24", "b7ae541d5d06e269b99ef2bddb43e6c9"], "statement_hash": "f03c2b2de51428c3fffc5de3f3fbce33e40afe490c3b000e1400a67094320e84", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-5633ca407d553c96", "migration": false}, {"id": "9.6.0-ff339cfc12aa29de", "cves": [], "html": "<p>\u6dfb\u52a0\u6267\u884c\u67e5\u8be2\u5e76\u628a\u7ed3\u679c\u91cd\u65b0\u4f5c\u4e3a\u65b0\u67e5\u8be2\u63d0\u4ea4\u7684 <code>\\gexec</code> \u547d\u4ee4\uff08Corey Huinker\uff09</p>", "text": "\u6dfb\u52a0\u6267\u884c\u67e5\u8be2\u5e76\u628a\u7ed3\u679c\u91cd\u65b0\u4f5c\u4e3a\u65b0\u67e5\u8be2\u63d0\u4ea4\u7684 \\gexec \u547d\u4ee4\uff08Corey Huinker\uff09", "title": "\u6dfb\u52a0\u6267\u884c\u67e5\u8be2\u5e76\u628a\u7ed3\u679c\u91cd\u65b0\u4f5c\u4e3a\u65b0\u67e5\u8be2\u63d0\u4ea4\u7684 \\gexec \u547d\u4ee4", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "e0019830489fc28e7a05b8728e5e5cffadf1b7ac5f219fef709826f14c9b4eff", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["2bbe9112a"]], "identity_text": "Add a \\gexec command that executes a query and re-submits the result(s) as new queries (Corey Huinker)", "commit_aliases": ["2bbe9112a"], "source_commits": ["2bbe9112a"], "source_entry_id": "9.6.0/changes/138", "db_id": "13b38e8c361fd3dff4289c090270f559", "patch_ids": ["2f8405206c072d309dbc3aeb0c323ac3"], "statement_hash": "1ab6c2ef37b9fe414f1fdb7558ef23a78d9357493b47c3affd42354161f275a8", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-ff339cfc12aa29de", "migration": false}, {"id": "9.6.0-caca60830a5e7523", "cves": [], "html": "<p>\u5141\u8bb8 <code>\\pset C <em><code>string</code></em></code> \u8bbe\u7f6e\u8868\u6807\u9898\uff0c\u4e0e <code>\\C <em><code>string</code></em></code> \u4e00\u81f4\uff08Bruce Momjian\uff09</p>", "text": "\u5141\u8bb8 \\pset C string \u8bbe\u7f6e\u8868\u6807\u9898\uff0c\u4e0e \\C string \u4e00\u81f4\uff08Bruce Momjian\uff09", "title": "\u5141\u8bb8 \\pset C string \u8bbe\u7f6e\u8868\u6807\u9898\uff0c\u4e0e \\C string \u4e00\u81f4", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "5cba1f213b9641fc6a8051ddd363396abd8f2c09b232a228a32799e9bd5e6e77", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["2145a7660"]], "identity_text": "Allow \\pset C string to set the table title, for consistency with \\C string (Bruce Momjian)", "commit_aliases": ["2145a7660"], "source_commits": ["2145a7660"], "source_entry_id": "9.6.0/changes/139", "db_id": "5b2c59e3ef783348321ee863b66ddcbd", "patch_ids": ["4eae0019bd4ae26b427194a17a6194d2"], "statement_hash": "60e5888afc7542df3dd9924725a2f7648a5dd9df54e46c46d08e1331d94e7328", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-caca60830a5e7523", "migration": false}, {"id": "9.6.0-b27c042c3a36bf5e", "cves": [], "html": "<p>\u5728 <code>\\pset expanded auto</code> \u6a21\u5f0f\u4e0b\uff0c\u5bf9\u53ea\u6709\u4e00\u5217\u7684\u67e5\u8be2\u7ed3\u679c\u4e0d\u4f7f\u7528\u6269\u5c55\u683c\u5f0f\uff08Andreas Karlsson\u3001Robert Haas\uff09</p>", "text": "\u5728 \\pset expanded auto \u6a21\u5f0f\u4e0b\uff0c\u5bf9\u53ea\u6709\u4e00\u5217\u7684\u67e5\u8be2\u7ed3\u679c\u4e0d\u4f7f\u7528\u6269\u5c55\u683c\u5f0f\uff08Andreas Karlsson\u3001Robert Haas\uff09", "title": "\u5728 \\pset expanded auto \u6a21\u5f0f\u4e0b\uff0c\u5bf9\u53ea\u6709\u4e00\u5217\u7684\u67e5\u8be2\u7ed3\u679c\u4e0d\u4f7f\u7528\u6269\u5c55\u683c\u5f0f", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "5f6b203f8885baae7f1c4226e9b1b1dc2e8f8df3290f400347b45de09cdcad70", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["69ab7b9d6"]], "identity_text": "In \\pset expanded auto mode, do not use expanded format for query results with only one column (Andreas Karlsson, Robert Haas)", "commit_aliases": ["69ab7b9d6"], "source_commits": ["69ab7b9d6"], "source_entry_id": "9.6.0/changes/140", "db_id": "8abfc6a1a2a65789fe6afdb88982ed32", "patch_ids": ["14677e6ecf21ee4992f7f1efe5882ce2"], "statement_hash": "7c29b329b393c90630e6b1c3cebc52ad0e561f64cf3ecd3c5984f745d4a25a9b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-b27c042c3a36bf5e", "migration": false}, {"id": "9.6.0-a28f11bca9d463ce", "cves": [], "html": "<p>\u6539\u8fdb <code>\\watch</code> \u547d\u4ee4\u8f93\u51fa\u7684\u5934\uff08Michael Paquier\u3001Tom Lane\uff09</p>\n<p>\u5305\u62ec <code>\\pset title</code> \u5b57\u7b26\u4e32\uff08\u5982\u679c\u5df2\u8bbe\u7f6e\uff09\uff0c\u5e76\u628a\u5934\u90e8\u9884\u5236\u90e8\u5206\u7f29\u77ed\u4e3a <code><em><code>timestamp</code></em> (every <em><code>N</code></em>s)</code>\u3002\u6b64\u5916\u65f6\u95f4\u6233\u683c\u5f0f\u73b0\u5728\u9075\u5faa <span>psql</span> \u7684\u533a\u57df\u73af\u5883\u3002</p>", "text": "\u6539\u8fdb \\watch \u547d\u4ee4\u8f93\u51fa\u7684\u5934\uff08Michael Paquier\u3001Tom Lane\uff09 \u5305\u62ec \\pset title \u5b57\u7b26\u4e32\uff08\u5982\u679c\u5df2\u8bbe\u7f6e\uff09\uff0c\u5e76\u628a\u5934\u90e8\u9884\u5236\u90e8\u5206\u7f29\u77ed\u4e3a timestamp (every Ns)\u3002\u6b64\u5916\u65f6\u95f4\u6233\u683c\u5f0f\u73b0\u5728\u9075\u5faa psql \u7684\u533a\u57df\u73af\u5883\u3002", "title": "\u6539\u8fdb \\watch \u547d\u4ee4\u8f93\u51fa\u7684\u5934", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "771c2e16f3821c8e8c8c1de4179440a3cdfa99afb853cc66dc3835705b69ce13", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["9901d8ac2"], ["dea2b5960"]], "identity_text": "Improve the headers output by the \\watch command (Michael Paquier, Tom Lane) Include the \\pset title string if one has been set, and shorten the prefabricated part of the header to be timestamp (every Ns). Also, the timestamp format now obeys psql's locale environment.", "commit_aliases": ["9901d8ac2", "dea2b5960"], "source_commits": ["9901d8ac2", "dea2b5960"], "source_entry_id": "9.6.0/changes/141", "db_id": "e12ebbbcfb1e473a752cbf58b3efec44", "patch_ids": ["e6282ba04f2ac2ae963aea42ec2b20fd", "f81ca2da842e7def570a364ed369b64a"], "statement_hash": "c50cca28d460b4559b52f4a1621a66a72dbc928747eaac1a423299f0f99e3885", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-a28f11bca9d463ce", "migration": false}, {"id": "9.6.0-e951e1068217b23d", "cves": [], "html": "<p>\u6539\u8fdb Tab \u8865\u5168\u903b\u8f91\u4ee5\u8003\u8651\u6574\u4e2a\u8f93\u5165\u67e5\u8be2\uff0c\u800c\u4e0d\u53ea\u662f\u5f53\u524d\u884c\uff08Tom Lane\uff09</p>\n<p>\u4ee5\u524d\u628a\u547d\u4ee4\u62c6\u6210\u591a\u884c\u4f1a\u51fb\u8d25\u4efb\u4f55\u9700\u8981\u770b\u5230\u524d\u51e0\u884c\u5355\u8bcd\u7684 Tab \u8865\u5168\u89c4\u5219\u3002</p>", "text": "\u6539\u8fdb Tab \u8865\u5168\u903b\u8f91\u4ee5\u8003\u8651\u6574\u4e2a\u8f93\u5165\u67e5\u8be2\uff0c\u800c\u4e0d\u53ea\u662f\u5f53\u524d\u884c\uff08Tom Lane\uff09 \u4ee5\u524d\u628a\u547d\u4ee4\u62c6\u6210\u591a\u884c\u4f1a\u51fb\u8d25\u4efb\u4f55\u9700\u8981\u770b\u5230\u524d\u51e0\u884c\u5355\u8bcd\u7684 Tab \u8865\u5168\u89c4\u5219\u3002", "title": "\u6539\u8fdb Tab \u8865\u5168\u903b\u8f91\u4ee5\u8003\u8651\u6574\u4e2a\u8f93\u5165\u67e5\u8be2\uff0c\u800c\u4e0d\u53ea\u662f\u5f53\u524d\u884c", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "148e053f2ef699a83d80efdce5f10bb0d1ee6fa7f301c3ebbf9187295bf9a6ce", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["d854118c8"]], "identity_text": "Improve tab-completion logic to consider the entire input query, not only the current line (Tom Lane) Previously, breaking a command into multiple lines defeated any tab completion rules that needed to see words on earlier lines.", "commit_aliases": ["d854118c8"], "source_commits": ["d854118c8"], "source_entry_id": "9.6.0/changes/142", "db_id": "85b9e3fd91229fb81ed1483d090cb620", "patch_ids": ["81ebdaa825ab83fe4b44f0a1a82f0247"], "statement_hash": "23130b5f4b29dc8b3ee9ba3518eb06e80cf7a10ebfd5f37bbe4948d181c3d710", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-e951e1068217b23d", "migration": false}, {"id": "9.6.0-9a3b6f33f6a8f3ad", "cves": [], "html": "<p>Tab \u8865\u5168\u884c\u4e3a\u7684\u5927\u91cf\u5c0f\u6539\u8fdb\uff08Peter Eisentraut\u3001Vik Fearing\u3001Kevin Grittner\u3001Kyotaro Horiguchi\u3001Jeff Janes\u3001Andreas Karlsson\u3001Fujii Masao\u3001Thomas Munro\u3001Masahiko Sawada\u3001Pavel Stehule\uff09</p>", "text": "Tab \u8865\u5168\u884c\u4e3a\u7684\u5927\u91cf\u5c0f\u6539\u8fdb\uff08Peter Eisentraut\u3001Vik Fearing\u3001Kevin Grittner\u3001Kyotaro Horiguchi\u3001Jeff Janes\u3001Andreas Karlsson\u3001Fujii Masao\u3001Thomas Munro\u3001Masahiko Sawada\u3001Pavel Stehule\uff09", "title": "Tab \u8865\u5168\u884c\u4e3a\u7684\u5927\u91cf\u5c0f\u6539\u8fdb", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "4b41641bfdc9fef3b5ed1c5a325610d839282f0099ef218895e3ae80804492cd", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["158e3bc8e"], ["2f8880704"], ["3ae16798f"], ["4189e3d65"], ["6ae4c8de0"], ["7c0b49cd0"], ["8014c44e8"], ["879d71393"], ["89611c4df"], ["b1bfb28b5"], ["bc56d5898"], ["bf4817e4f"], ["d0f2f53cd"]], "identity_text": "Numerous minor improvements in tab-completion behavior (Peter Eisentraut, Vik Fearing, Kevin Grittner, Kyotaro Horiguchi, Jeff Janes, Andreas Karlsson, Fujii Masao, Thomas Munro, Masahiko Sawada, Pavel Stehule)", "commit_aliases": ["158e3bc8e", "2f8880704", "3ae16798f", "4189e3d65", "6ae4c8de0", "7c0b49cd0", "8014c44e8", "879d71393", "89611c4df", "b1bfb28b5", "bc56d5898", "bf4817e4f", "d0f2f53cd"], "source_commits": ["158e3bc8e", "2f8880704", "3ae16798f", "4189e3d65", "6ae4c8de0", "7c0b49cd0", "8014c44e8", "879d71393", "89611c4df", "b1bfb28b5", "bc56d5898", "bf4817e4f", "d0f2f53cd"], "source_entry_id": "9.6.0/changes/143", "db_id": "890cf3f25e614891e6c297b7bed6c45c", "patch_ids": ["0b1c38e540a7e03892e9f14b1b897722", "21141fccf90e7dd21137e027f13ed5e6", "3992266ad10cd06087d9e2a49f0b618f", "507b4e10ca81725e7cf6d3b5c8f4e1c9", "5e8bee78ae141f022d6734540f85116a", "6a6f014629fcdb0d63b8d8969f19094f", "742439f7e626dd769cef05107838f1e9", "87af778d6d2b2f1ba5be49ab16753fc8", "8c61790bd82215d681e6ff3c4b517c3f", "b45cc9df873940c23dafa9841a0b770c", "d87a9468bcc63aacc58d565724e120ed", "e538efdcf5de8219d0bd42c02db56adb", "eac046aa32905bab19b9c6f4534bc8ba"], "statement_hash": "2fd1722b78d02355cd7d471916a516e48c63154412c6b52b84ad75a782356c4c", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-9a3b6f33f6a8f3ad", "migration": false}, {"id": "9.6.0-89c1c2f19f0876ba", "cves": [], "html": "<p>\u6dfb\u52a0 <code>PROMPT</code> \u9009\u9879 <code>%p</code> \u4ee5\u63d2\u5165\u6240\u8fde\u63a5\u540e\u7aef\u7684\u8fdb\u7a0b ID\uff08Julien Rouhaud\uff09</p>", "text": "\u6dfb\u52a0 PROMPT \u9009\u9879 %p \u4ee5\u63d2\u5165\u6240\u8fde\u63a5\u540e\u7aef\u7684\u8fdb\u7a0b ID\uff08Julien Rouhaud\uff09", "title": "\u6dfb\u52a0 PROMPT \u9009\u9879 %p \u4ee5\u63d2\u5165\u6240\u8fde\u63a5\u540e\u7aef\u7684\u8fdb\u7a0b ID", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "b4b97c0a15ba79420ade01a0b4313bd91219acd9254d134bf186ed43186fe980", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["275f05c99"]], "identity_text": "Add a PROMPT option %p to insert the process ID of the connected backend (Julien Rouhaud)", "commit_aliases": ["275f05c99"], "source_commits": ["275f05c99"], "source_entry_id": "9.6.0/changes/144", "db_id": "c1c80a3e6757f4a8d607b26fc3f7cddf", "patch_ids": ["c3dfc549d612d53294a2c4b578e01d2e"], "statement_hash": "e6188876ae56b5ad043c4dcb47f755e41e6067f981e5280001566fbfc255066e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-89c1c2f19f0876ba", "migration": false}, {"id": "9.6.0-5dfbe1edb70fc5fe", "cves": [], "html": "<p>\u5f15\u5165\u4e00\u9879\u7279\u6027\uff0c\u53ef\u4ee5\u59cb\u7ec8\u6216\u53ea\u5bf9\u975e\u9519\u8bef\u6d88\u606f\u6291\u5236\u6d88\u606f\u7684 <code>CONTEXT</code> \u5b57\u6bb5\uff08Pavel Stehule\uff09</p>\n<p>\u53ea\u5bf9\u9519\u8bef\u6253\u5370 <code>CONTEXT</code> \u73b0\u5728\u662f\u9ed8\u8ba4\u884c\u4e3a\u3002\u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6e\u7279\u6b8a\u53d8\u91cf <code>SHOW_CONTEXT</code> \u66f4\u6539\u3002</p>", "text": "\u5f15\u5165\u4e00\u9879\u7279\u6027\uff0c\u53ef\u4ee5\u59cb\u7ec8\u6216\u53ea\u5bf9\u975e\u9519\u8bef\u6d88\u606f\u6291\u5236\u6d88\u606f\u7684 CONTEXT \u5b57\u6bb5\uff08Pavel Stehule\uff09 \u53ea\u5bf9\u9519\u8bef\u6253\u5370 CONTEXT \u73b0\u5728\u662f\u9ed8\u8ba4\u884c\u4e3a\u3002\u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6e\u7279\u6b8a\u53d8\u91cf SHOW_CONTEXT \u66f4\u6539\u3002", "title": "\u5f15\u5165\u4e00\u9879\u7279\u6027\uff0c\u53ef\u4ee5\u59cb\u7ec8\u6216\u53ea\u5bf9\u975e\u9519\u8bef\u6d88\u606f\u6291\u5236\u6d88\u606f\u7684 CONTEXT \u5b57\u6bb5", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "cc5f4915430f84d0628cc9e29e45d24d81ef683de17e87d7d54a7c16c98398bb", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["0426f349e"]], "identity_text": "Introduce a feature whereby the CONTEXT field of messages can be suppressed, either always or only for non-error messages (Pavel Stehule) Printing CONTEXT only for errors is now the default behavior. This can be changed by setting the special variable SHOW_CONTEXT.", "commit_aliases": ["0426f349e"], "source_commits": ["0426f349e"], "source_entry_id": "9.6.0/changes/145", "db_id": "3ce123ea6c2d6bd34288d178655446b8", "patch_ids": ["d674faf49d479be5cc744274d9634d04"], "statement_hash": "a7fde02d87c498a1365675c15da9c7f859adfe490cf5ba2535dd96fd3e990b57", "relations": [{"rule": 2, "type": "related", "target": "170b1fefcffcedda9461e5d56803fec1", "evidence": {"same_day": true, "patch_ids": ["d674faf49d479be5cc744274d9634d04"], "ambiguous_patch_ids": ["d674faf49d479be5cc744274d9634d04"]}}, {"rule": 2, "type": "related", "target": "38f5670a2a48e398fc5f56296717be27", "evidence": {"same_day": true, "patch_ids": ["d674faf49d479be5cc744274d9634d04"], "ambiguous_patch_ids": ["d674faf49d479be5cc744274d9634d04"]}}], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-5dfbe1edb70fc5fe", "migration": false}, {"id": "9.6.0-789044856ef7b7bb", "cves": [], "html": "<p>\u4f7f <code>\\df+</code> \u663e\u793a\u51fd\u6570\u8bbf\u95ee\u6743\u9650\u548c\u5e76\u884c\u5b89\u5168\u5c5e\u6027\uff08Michael Paquier\uff09</p>", "text": "\u4f7f \\df+ \u663e\u793a\u51fd\u6570\u8bbf\u95ee\u6743\u9650\u548c\u5e76\u884c\u5b89\u5168\u5c5e\u6027\uff08Michael Paquier\uff09", "title": "\u4f7f \\df+ \u663e\u793a\u51fd\u6570\u8bbf\u95ee\u6743\u9650\u548c\u5e76\u884c\u5b89\u5168\u5c5e\u6027", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.3", "source_hash": "1ed212e91fb3c5ae4e5b5e767e49675baf5f1715f54b4528b3ad87e23334b3be", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["a670c24c3"]], "identity_text": "Make \\df+ show function access privileges and parallel-safety attributes (Michael Paquier)", "commit_aliases": ["a670c24c3"], "source_commits": ["a670c24c3"], "source_entry_id": "9.6.0/changes/146", "db_id": "e6321fc264f0ba9c568779146505c86f", "patch_ids": ["5c582cc984b841628b2b38da00233637"], "statement_hash": "bf6d308d614e5a4dd9ee8adecdfc59f73a06e205c092e8c21cf5d174bcfedfde", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-789044856ef7b7bb", "migration": false}, {"id": "9.6.0-0e8e90f31962f298", "cves": [], "html": "<p><span>pgbench</span> \u811a\u672c\u4e2d\u7684 SQL \u547d\u4ee4\u73b0\u5728\u4ee5\u5206\u53f7\u800c\u975e\u6362\u884c\u7ed3\u675f\uff08Kyotaro Horiguchi\u3001Tom Lane\uff09</p>\n<p>\u6b64\u66f4\u6539\u5141\u8bb8\u811a\u672c\u4e2d\u7684 SQL \u547d\u4ee4\u8de8\u591a\u884c\u3002\u73b0\u6709\u7684\u81ea\u5b9a\u4e49\u811a\u672c\u9700\u8981\u4fee\u6539\uff0c\u5728\u6bcf\u4e2a\u8fd8\u6ca1\u6709\u5206\u53f7\u7684\u884c\u5c3e\u6dfb\u52a0\u5206\u53f7\u3002\uff08\u8fd9\u6837\u505a\u4e0d\u4f1a\u7834\u574f\u811a\u672c\u5728\u65e7\u7248\u672c <span>pgbench</span> \u4e2d\u7684\u4f7f\u7528\u3002\uff09</p>", "text": "pgbench \u811a\u672c\u4e2d\u7684 SQL \u547d\u4ee4\u73b0\u5728\u4ee5\u5206\u53f7\u800c\u975e\u6362\u884c\u7ed3\u675f\uff08Kyotaro Horiguchi\u3001Tom Lane\uff09 \u6b64\u66f4\u6539\u5141\u8bb8\u811a\u672c\u4e2d\u7684 SQL \u547d\u4ee4\u8de8\u591a\u884c\u3002\u73b0\u6709\u7684\u81ea\u5b9a\u4e49\u811a\u672c\u9700\u8981\u4fee\u6539\uff0c\u5728\u6bcf\u4e2a\u8fd8\u6ca1\u6709\u5206\u53f7\u7684\u884c\u5c3e\u6dfb\u52a0\u5206\u53f7\u3002\uff08\u8fd9\u6837\u505a\u4e0d\u4f1a\u7834\u574f\u811a\u672c\u5728\u65e7\u7248\u672c pgbench \u4e2d\u7684\u4f7f\u7528\u3002\uff09", "title": "pgbench \u811a\u672c\u4e2d\u7684 SQL \u547d\u4ee4\u73b0\u5728\u4ee5\u5206\u53f7\u800c\u975e\u6362\u884c\u7ed3\u675f", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / pgbench", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.4", "source_hash": "3f0f6e700f5fc0539cc665d2c6239f58a22aa45e0a84b2074090fa00acacc479", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "pgbench"], "commit_groups": [["68ab8e8ba"]], "identity_text": "SQL commands in pgbench scripts are now ended by semicolons, not newlines (Kyotaro Horiguchi, Tom Lane) This change allows SQL commands in scripts to span multiple lines. Existing custom scripts will need to be modified to add a semicolon at the end of each line that does not have one already. (Doing so does not break the script for use with older versions of pgbench.)", "commit_aliases": ["68ab8e8ba"], "source_commits": ["68ab8e8ba"], "source_entry_id": "9.6.0/changes/147", "db_id": "fd5a866c5fbdfd2c9df3696526558d59", "patch_ids": ["81009f194d31f4fad5d256756a7d8831"], "statement_hash": "a1366f9ccf7a88dbcc3288006ee4563d93254c61db48720828141f25bf56c5f7", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-0e8e90f31962f298", "migration": false}, {"id": "9.6.0-d14a10a5dc37b78d", "cves": [], "html": "<p>\u652f\u6301\u53cd\u659c\u6760\u547d\u4ee4\u8868\u8fbe\u5f0f\u4e2d\u7684\u6d6e\u70b9\u8fd0\u7b97\u4ee5\u53ca\u4e00\u4e9b<a href=\"/docs/9.6/pgbench.html#PGBENCH-BUILTIN-FUNCTIONS\" title=\"\u5185\u7f6e\u51fd\u6570\">\u5185\u5efa\u51fd\u6570</a>\uff08Fabien Coelho\uff09</p>", "text": "\u652f\u6301\u53cd\u659c\u6760\u547d\u4ee4\u8868\u8fbe\u5f0f\u4e2d\u7684\u6d6e\u70b9\u8fd0\u7b97\u4ee5\u53ca\u4e00\u4e9b\u5185\u5efa\u51fd\u6570\uff08Fabien Coelho\uff09", "title": "\u652f\u6301\u53cd\u659c\u6760\u547d\u4ee4\u8868\u8fbe\u5f0f\u4e2d\u7684\u6d6e\u70b9\u8fd0\u7b97\u4ee5\u53ca\u4e00\u4e9b\u5185\u5efa\u51fd\u6570", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / pgbench", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.4", "source_hash": "7ef100f63d66a03816795016bcd60b9837000cfd3c131cf1ac99736bb4dd59ce", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "pgbench"], "commit_groups": [["7a622b273"], ["7e137f846"], ["86c43f4e2"], ["951529948"]], "identity_text": "Support floating-point arithmetic, as well as some built-in functions, in expressions in backslash commands (Fabien Coelho)", "commit_aliases": ["7a622b273", "7e137f846", "86c43f4e2", "951529948"], "source_commits": ["7a622b273", "7e137f846", "86c43f4e2", "951529948"], "source_entry_id": "9.6.0/changes/148", "db_id": "09ebeaa832cb7ee34c85f28befdb2fdc", "patch_ids": ["1450f363f45566482791b61246e24cbc", "94c5df2c011edfee2176eabc57fa2832", "c69560be041b259ad142c5b1e1135189", "dc43c46380ffb2e4c582717d665d6d01"], "statement_hash": "411871e5186918fcc9100028c18749b64dbf9953493bb98bbb6ce4f5eff62ba7", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-d14a10a5dc37b78d", "migration": false}, {"id": "9.6.0-c6809f7bcda1e74b", "cves": [], "html": "<p>\u7528\u5185\u5efa\u51fd\u6570\u66ff\u6362 <code>\\setrandom</code>\uff08Fabien Coelho\uff09</p>\n<p>\u65b0\u5185\u5efa\u51fd\u6570\u5305\u62ec <a href=\"/docs/9.6/pgbench.html#PGBENCH-FUNCTIONS\" title=\"\u8868\u00a0240.\u00a0pgbench \u51fd\u6570\"><code>random()</code></a>\u3001<code>random_exponential()</code> \u548c <code>random_gaussian()</code>\uff0c\u5b83\u4eec\u6267\u884c\u4e0e <code>\\setrandom</code> \u76f8\u540c\u7684\u5de5\u4f5c\uff0c\u4f46\u66f4\u6613\u4e8e\u4f7f\u7528\uff0c\u56e0\u4e3a\u53ef\u4ee5\u5d4c\u5165\u66f4\u5927\u7684\u8868\u8fbe\u5f0f\u3002\u7531\u4e8e\u8fd9\u4e9b\u6dfb\u52a0\u4f7f <code>\\setrandom</code> \u8fc7\u65f6\uff0c\u5c06\u5176\u79fb\u9664\u3002</p>", "text": "\u7528\u5185\u5efa\u51fd\u6570\u66ff\u6362 \\setrandom\uff08Fabien Coelho\uff09 \u65b0\u5185\u5efa\u51fd\u6570\u5305\u62ec random()\u3001random_exponential() \u548c random_gaussian()\uff0c\u5b83\u4eec\u6267\u884c\u4e0e \\setrandom \u76f8\u540c\u7684\u5de5\u4f5c\uff0c\u4f46\u66f4\u6613\u4e8e\u4f7f\u7528\uff0c\u56e0\u4e3a\u53ef\u4ee5\u5d4c\u5165\u66f4\u5927\u7684\u8868\u8fbe\u5f0f\u3002\u7531\u4e8e\u8fd9\u4e9b\u6dfb\u52a0\u4f7f \\setrandom \u8fc7\u65f6\uff0c\u5c06\u5176\u79fb\u9664\u3002", "title": "\u7528\u5185\u5efa\u51fd\u6570\u66ff\u6362 \\setrandom", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / pgbench", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.4", "source_hash": "e9ad1d51e2f6f024233a82bdcb22bc3a82c74969d49aad90f19e6d53218de6de", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "pgbench"], "commit_groups": [["ad9566470"]], "identity_text": "Replace \\setrandom with built-in functions (Fabien Coelho) The new built-in functions include random(), random_exponential(), and random_gaussian(), which perform the same work as \\setrandom, but are easier to use since they can be embedded in larger expressions. Since these additions have made \\setrandom obsolete, remove it.", "commit_aliases": ["ad9566470"], "source_commits": ["ad9566470"], "source_entry_id": "9.6.0/changes/149", "db_id": "f8da612b81ff368f05b4ac9d5e63af2f", "patch_ids": ["701282bc1ba12851268c8a97cfa4c03a"], "statement_hash": "c421273622030eed1f43259f2267e7adb03554095a7c2fc72a526c755f84d5a5", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-c6809f7bcda1e74b", "migration": false}, {"id": "9.6.0-cbbf5f507323d0df", "cves": [], "html": "<p>\u5141\u8bb8\u8c03\u7528\u5185\u5efa\u811a\u672c\u7684\u591a\u4e2a\u526f\u672c\uff0c\u800c\u4e0d\u53ea\u662f\u81ea\u5b9a\u4e49\u811a\u672c\uff08Fabien Coelho\uff09</p>\n<p>\u8fd9\u901a\u8fc7\u65b0\u7684 <code>-b</code> \u5f00\u5173\u5b8c\u6210\uff0c\u5b83\u5bf9\u81ea\u5b9a\u4e49\u811a\u672c\u7684\u4f5c\u7528\u7c7b\u4f3c\u4e8e <code>-f</code>\u3002</p>", "text": "\u5141\u8bb8\u8c03\u7528\u5185\u5efa\u811a\u672c\u7684\u591a\u4e2a\u526f\u672c\uff0c\u800c\u4e0d\u53ea\u662f\u81ea\u5b9a\u4e49\u811a\u672c\uff08Fabien Coelho\uff09 \u8fd9\u901a\u8fc7\u65b0\u7684 -b \u5f00\u5173\u5b8c\u6210\uff0c\u5b83\u5bf9\u81ea\u5b9a\u4e49\u811a\u672c\u7684\u4f5c\u7528\u7c7b\u4f3c\u4e8e -f\u3002", "title": "\u5141\u8bb8\u8c03\u7528\u5185\u5efa\u811a\u672c\u7684\u591a\u4e2a\u526f\u672c\uff0c\u800c\u4e0d\u53ea\u662f\u81ea\u5b9a\u4e49\u811a\u672c", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / pgbench", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.4", "source_hash": "74bf1260519b8675abaecdd890f3b860783149121c5dd265627d2b6a71059da0", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "pgbench"], "commit_groups": [["8bea3d221"], ["d561f1cae"]], "identity_text": "Allow invocation of multiple copies of the built-in scripts, not only custom scripts (Fabien Coelho) This is done with the new -b switch, which works similarly to -f for custom scripts.", "commit_aliases": ["8bea3d221", "d561f1cae"], "source_commits": ["8bea3d221", "d561f1cae"], "source_entry_id": "9.6.0/changes/150", "db_id": "080ef0e74108d8ae9cf4997036ea0543", "patch_ids": ["19f4270e318911306c5b014e47790051", "9a323d7b78b3e13481a691c26383ebf3"], "statement_hash": "5cb113b4f39eda62e7c889fbbb582c1c894392b192e21556259d5fe874c5e639", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-cbbf5f507323d0df", "migration": false}, {"id": "9.6.0-61a181d87c548517", "cves": [], "html": "<p>\u5141\u8bb8\u66f4\u6539\u811a\u672c\u7684\u9009\u62e9\u6982\u7387\uff08\u6743\u91cd\uff09\uff08Fabien Coelho\uff09</p>\n<p>\u5f53\u6307\u5b9a\u591a\u4e2a\u811a\u672c\u65f6\uff0c\u6bcf\u4e2a <span>pgbench</span> \u4e8b\u52a1\u968f\u673a\u9009\u62e9\u4e00\u4e2a\u6267\u884c\u3002\u4ee5\u524d\u8fd9\u603b\u662f\u4ee5\u5747\u5300\u6982\u7387\u5b8c\u6210\uff0c\u4f46\u73b0\u5728\u53ef\u4ee5\u4e3a\u4e0d\u540c\u811a\u672c\u6307\u5b9a\u4e0d\u540c\u7684\u9009\u62e9\u6982\u7387\u3002</p>", "text": "\u5141\u8bb8\u66f4\u6539\u811a\u672c\u7684\u9009\u62e9\u6982\u7387\uff08\u6743\u91cd\uff09\uff08Fabien Coelho\uff09 \u5f53\u6307\u5b9a\u591a\u4e2a\u811a\u672c\u65f6\uff0c\u6bcf\u4e2a pgbench \u4e8b\u52a1\u968f\u673a\u9009\u62e9\u4e00\u4e2a\u6267\u884c\u3002\u4ee5\u524d\u8fd9\u603b\u662f\u4ee5\u5747\u5300\u6982\u7387\u5b8c\u6210\uff0c\u4f46\u73b0\u5728\u53ef\u4ee5\u4e3a\u4e0d\u540c\u811a\u672c\u6307\u5b9a\u4e0d\u540c\u7684\u9009\u62e9\u6982\u7387\u3002", "title": "\u5141\u8bb8\u66f4\u6539\u811a\u672c\u7684\u9009\u62e9\u6982\u7387\uff08\u6743\u91cd\uff09", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / pgbench", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.4", "source_hash": "0558ed5cc6b6fd4f4255832c5dd0448febdd7d2b24aded5c6d6eca0ed6316c47", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "pgbench"], "commit_groups": [["7bafffea6"], ["970300faa"]], "identity_text": "Allow changing the selection probabilities (weights) for scripts (Fabien Coelho) When multiple scripts are specified, each pgbench transaction randomly chooses one to execute. Formerly this was always done with uniform probability, but now different selection probabilities can be specified for different scripts.", "commit_aliases": ["7bafffea6", "970300faa"], "source_commits": ["7bafffea6", "970300faa"], "source_entry_id": "9.6.0/changes/151", "db_id": "64b3406d8d2c9044c9fbf97c64de9470", "patch_ids": ["bf433b1823801515835a61d4a5d99c58", "ce4dc28b741efa3b9a0cff9474a9aeac"], "statement_hash": "bc16596c8197d052b47e9c1ffc80ed113e741f6baa4ec311c8005be13c60bbc7", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-61a181d87c548517", "migration": false}, {"id": "9.6.0-44f0a8794d2c71e5", "cves": [], "html": "<p>\u5728\u591a\u811a\u672c\u8fd0\u884c\u4e2d\u4e3a\u6bcf\u4e2a\u811a\u672c\u6536\u96c6\u7edf\u8ba1\u4fe1\u606f\uff08Fabien Coelho\uff09</p>\n<p>\u6b64\u7279\u6027\u4e3a\u73b0\u6709\u7684\u5168\u5c40\u548c\u9010\u547d\u4ee4\u7edf\u8ba1\u8f93\u51fa\u6dfb\u52a0\u4e86\u4e00\u4e2a\u4e2d\u95f4\u7ec6\u8282\u7ea7\u522b\u3002</p>", "text": "\u5728\u591a\u811a\u672c\u8fd0\u884c\u4e2d\u4e3a\u6bcf\u4e2a\u811a\u672c\u6536\u96c6\u7edf\u8ba1\u4fe1\u606f\uff08Fabien Coelho\uff09 \u6b64\u7279\u6027\u4e3a\u73b0\u6709\u7684\u5168\u5c40\u548c\u9010\u547d\u4ee4\u7edf\u8ba1\u8f93\u51fa\u6dfb\u52a0\u4e86\u4e00\u4e2a\u4e2d\u95f4\u7ec6\u8282\u7ea7\u522b\u3002", "title": "\u5728\u591a\u811a\u672c\u8fd0\u884c\u4e2d\u4e3a\u6bcf\u4e2a\u811a\u672c\u6536\u96c6\u7edf\u8ba1\u4fe1\u606f", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / pgbench", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.4", "source_hash": "a8df2b20d56d973e6b1f1d81a235ff764076a6171c421e70d91578e7c1637300", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "pgbench"], "commit_groups": [["1d0c3b3f8"]], "identity_text": "Collect statistics for each script in a multi-script run (Fabien Coelho) This feature adds an intermediate level of detail to existing global and per-command statistics printouts.", "commit_aliases": ["1d0c3b3f8"], "source_commits": ["1d0c3b3f8"], "source_entry_id": "9.6.0/changes/152", "db_id": "b51daaf486a2ef30d6731f85c12b338c", "patch_ids": ["a77bd6f199e71f5ba805460f4797573d"], "statement_hash": "57d1bc05b48f3598375a443bb8f8fb8282e7914ce7fb5c72297d98896bafbaf7", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-44f0a8794d2c71e5", "migration": false}, {"id": "9.6.0-e00d9ad2b4469f43", "cves": [], "html": "<p>\u6dfb\u52a0 <code>--progress-timestamp</code> \u9009\u9879\u4ee5\u7528 Unix \u7eaa\u5143\u65f6\u95f4\u6233\u62a5\u544a\u8fdb\u5ea6\uff0c\u800c\u4e0d\u662f\u81ea\u8fd0\u884c\u5f00\u59cb\u4ee5\u6765\u7684\u65f6\u95f4\uff08Fabien Coelho\uff09</p>", "text": "\u6dfb\u52a0 --progress-timestamp \u9009\u9879\u4ee5\u7528 Unix \u7eaa\u5143\u65f6\u95f4\u6233\u62a5\u544a\u8fdb\u5ea6\uff0c\u800c\u4e0d\u662f\u81ea\u8fd0\u884c\u5f00\u59cb\u4ee5\u6765\u7684\u65f6\u95f4\uff08Fabien Coelho\uff09", "title": "\u6dfb\u52a0 --progress-timestamp \u9009\u9879\u4ee5\u7528 Unix \u7eaa\u5143\u65f6\u95f4\u6233\u62a5\u544a\u8fdb\u5ea6\uff0c\u800c\u4e0d\u662f\u81ea\u8fd0\u884c\u5f00\u59cb\u4ee5\u6765\u7684\u65f6\u95f4", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / pgbench", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.4", "source_hash": "e421648d0c4674e9deb36d604420c27c037772f5fd6c845ed926f6732b4e4133", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "pgbench"], "commit_groups": [["1def9063c"]], "identity_text": "Add a --progress-timestamp option to report progress with Unix epoch timestamps, instead of time since the run started (Fabien Coelho)", "commit_aliases": ["1def9063c"], "source_commits": ["1def9063c"], "source_entry_id": "9.6.0/changes/153", "db_id": "8ccf638b4321a3d5968c8b4de23e4b47", "patch_ids": ["f189d47217ecaa2b7cdbe0fe714142d3"], "statement_hash": "4fdad26bd3ca79acb876639ee4f9dc8118d109faf081e071bc4d64646359abd3", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-e00d9ad2b4469f43", "migration": false}, {"id": "9.6.0-2d6f077dfec28828", "cves": [], "html": "<p>\u5141\u8bb8\u5ba2\u6237\u7aef\u8fde\u63a5\u6570\uff08<code>-c</code>\uff09\u4e0d\u5fc5\u662f\u7ebf\u7a0b\u6570\uff08<code>-j</code>\uff09\u7684\u7cbe\u786e\u500d\u6570\uff08Fabien Coelho\uff09</p>", "text": "\u5141\u8bb8\u5ba2\u6237\u7aef\u8fde\u63a5\u6570\uff08-c\uff09\u4e0d\u5fc5\u662f\u7ebf\u7a0b\u6570\uff08-j\uff09\u7684\u7cbe\u786e\u500d\u6570\uff08Fabien Coelho\uff09", "title": "\u5141\u8bb8\u5ba2\u6237\u7aef\u8fde\u63a5\u6570\uff08-c\uff09\u4e0d\u5fc5\u662f\u7ebf\u7a0b\u6570\uff08-j\uff09\u7684\u7cbe\u786e\u500d\u6570", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / pgbench", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.4", "source_hash": "dca7920d1317f54e1dd5906fad58be5af3a85135058552e34ae0cf05b3522220", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "pgbench"], "commit_groups": [["ba3deeefb"]], "identity_text": "Allow the number of client connections (-c) to not be an exact multiple of the number of threads (-j) (Fabien Coelho)", "commit_aliases": ["ba3deeefb"], "source_commits": ["ba3deeefb"], "source_entry_id": "9.6.0/changes/154", "db_id": "0e43b89310cc4712bfa662fce94f6516", "patch_ids": ["b3301723f0184388ed774dc5bede1d29"], "statement_hash": "7d4ab72f99eba4e5c9a11016a2d481c6118945ac56cae0d3a778ad224f62119b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-2d6f077dfec28828", "migration": false}, {"id": "9.6.0-c19a2caa0479a297", "cves": [], "html": "<p>\u4f7f\u7528 <code>-T</code> \u9009\u9879\u65f6\uff0c\u5728\u6307\u5b9a\u65f6\u95f4\u7ed3\u675f\u65f6\u53ca\u65f6\u505c\u6b62\uff08Fabien Coelho\uff09</p>\n<p>\u4ee5\u524d\u6307\u5b9a\u4f4e\u4e8b\u52a1\u901f\u7387\u53ef\u80fd\u5bfc\u81f4 <span>pgbench</span> \u7b49\u5f85\u660e\u663e\u957f\u4e8e\u6307\u5b9a\u7684\u65f6\u95f4\u3002</p>", "text": "\u4f7f\u7528 -T \u9009\u9879\u65f6\uff0c\u5728\u6307\u5b9a\u65f6\u95f4\u7ed3\u675f\u65f6\u53ca\u65f6\u505c\u6b62\uff08Fabien Coelho\uff09 \u4ee5\u524d\u6307\u5b9a\u4f4e\u4e8b\u52a1\u901f\u7387\u53ef\u80fd\u5bfc\u81f4 pgbench \u7b49\u5f85\u660e\u663e\u957f\u4e8e\u6307\u5b9a\u7684\u65f6\u95f4\u3002", "title": "\u4f7f\u7528 -T \u9009\u9879\u65f6\uff0c\u5728\u6307\u5b9a\u65f6\u95f4\u7ed3\u675f\u65f6\u53ca\u65f6\u505c\u6b62", "commits": [], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / pgbench", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.12.4", "source_hash": "7affe89033845386c53d35449389513074043ac2d1c0e592da7d2b0d680b4d54", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "pgbench"], "commit_groups": [["accf7616f"]], "identity_text": "When the -T option is used, stop promptly at the end of the specified time (Fabien Coelho) Previously, specifying a low transaction rate could cause pgbench to wait significantly longer than specified.", "commit_aliases": ["accf7616f"], "source_commits": ["accf7616f"], "source_entry_id": "9.6.0/changes/155", "db_id": "db011a3cb21530aca8134e5ddec320d5", "patch_ids": ["acfcb1a9931e1b7c3776ccec20128834"], "statement_hash": "f2614eaee16510f24c749ac409108caf4ae8df39f43757e979098bf02f0f51b2", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-c19a2caa0479a297", "migration": false}, {"id": "9.6.0-315b7c0969492f7c", "cves": [], "html": "<p>\u6539\u8fdb <span>initdb</span> \u5f15\u5bfc\u540e\u9636\u6bb5\u7684\u9519\u8bef\u62a5\u544a\uff08Tom Lane\uff09</p>\n<p>\u4ee5\u524d\u8fd9\u91cc\u7684\u9519\u8bef\u5bfc\u81f4\u628a\u6574\u4e2a\u8f93\u5165\u6587\u4ef6\u62a5\u544a\u4e3a<span>\u201c<span>\u5931\u8d25\u7684\u67e5\u8be2</span>\u201d</span>\uff1b\u73b0\u5728\u53ea\u62a5\u544a\u5f53\u524d\u67e5\u8be2\u3002\u4e3a\u83b7\u5f97\u671f\u671b\u7684\u884c\u4e3a\uff0c <span>initdb</span> \u8f93\u5165\u6587\u4ef6\u4e2d\u7684\u67e5\u8be2\u5fc5\u987b\u7528\u7a7a\u884c\u5206\u9694\u3002</p>", "text": "\u6539\u8fdb initdb \u5f15\u5bfc\u540e\u9636\u6bb5\u7684\u9519\u8bef\u62a5\u544a\uff08Tom Lane\uff09 \u4ee5\u524d\u8fd9\u91cc\u7684\u9519\u8bef\u5bfc\u81f4\u628a\u6574\u4e2a\u8f93\u5165\u6587\u4ef6\u62a5\u544a\u4e3a\u201c\u5931\u8d25\u7684\u67e5\u8be2\u201d\uff1b\u73b0\u5728\u53ea\u62a5\u544a\u5f53\u524d\u67e5\u8be2\u3002\u4e3a\u83b7\u5f97\u671f\u671b\u7684\u884c\u4e3a\uff0c initdb \u8f93\u5165\u6587\u4ef6\u4e2d\u7684\u67e5\u8be2\u5fc5\u987b\u7528\u7a7a\u884c\u5206\u9694\u3002", "title": "\u6539\u8fdb initdb \u5f15\u5bfc\u540e\u9636\u6bb5\u7684\u9519\u8bef\u62a5\u544a", "commits": [], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.13", "source_hash": "1a3bafb2acc1d4de3c4f54e12c077728463b17925169e60a27e36578f09d2d98", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["66d947b9d"]], "identity_text": "Improve error reporting during initdb's post-bootstrap phase (Tom Lane) Previously, an error here led to reporting the entire input file as the failing query; now just the current query is reported. To get the desired behavior, queries in initdb's input files must be separated by blank lines.", "commit_aliases": ["66d947b9d"], "source_commits": ["66d947b9d"], "source_entry_id": "9.6.0/changes/156", "db_id": "b24070e720c788555a888dc98b4c20e8", "patch_ids": ["27c50a37cab63242436ea8eba8921880"], "statement_hash": "a3fea1d65148f3b6caed05efdebdd3ee345c558d1305e0f3244cefbd39e18180", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-315b7c0969492f7c", "migration": false}, {"id": "9.6.0-4e9643aa2516d8d9", "cves": [], "html": "<p>\u901a\u8fc7\u4e3a\u6240\u6709\u5f15\u5bfc\u540e\u6b65\u9aa4\u53ea\u4f7f\u7528\u4e00\u4e2a\u72ec\u7acb\u540e\u7aef\u4f1a\u8bdd\u6765\u52a0\u901f <span>initdb</span>\uff08Tom Lane\uff09</p>", "text": "\u901a\u8fc7\u4e3a\u6240\u6709\u5f15\u5bfc\u540e\u6b65\u9aa4\u53ea\u4f7f\u7528\u4e00\u4e2a\u72ec\u7acb\u540e\u7aef\u4f1a\u8bdd\u6765\u52a0\u901f initdb\uff08Tom Lane\uff09", "title": "\u901a\u8fc7\u4e3a\u6240\u6709\u5f15\u5bfc\u540e\u6b65\u9aa4\u53ea\u4f7f\u7528\u4e00\u4e2a\u72ec\u7acb\u540e\u7aef\u4f1a\u8bdd\u6765\u52a0\u901f initdb", "commits": [], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.13", "source_hash": "bcbfc210bf7194c44492cbef677f778c8ea7026cfd58948f561e6e74d2a796f2", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["c4a8812cf"], ["d9720e437"]], "identity_text": "Speed up initdb by using just one standalone-backend session for all the post-bootstrap steps (Tom Lane)", "commit_aliases": ["c4a8812cf", "d9720e437"], "source_commits": ["c4a8812cf", "d9720e437"], "source_entry_id": "9.6.0/changes/157", "db_id": "c92fec2892ecc415360b9aba11991110", "patch_ids": ["61e718e873938a434199b22a07ed612b", "8b377c22ec1801a294ae0fd4ccdb715a"], "statement_hash": "e1f6e22424332735ddc1a2f2343c3356cbdb3c38c4f5b265502418be0e244a62", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-4e9643aa2516d8d9", "migration": false}, {"id": "9.6.0-48876cb59a78211a", "cves": [], "html": "<p>\u6539\u8fdb<a href=\"/docs/9.6/app-pgrewind.html\" title=\"pg_rewind\"><span>pg_rewind</span></a>\u4f7f\u5b83\u80fd\u5728\u76ee\u6807\u65f6\u95f4\u7ebf\u66f4\u6539\u65f6\u5de5\u4f5c\uff08Alexander Korotkov\uff09</p>\n<p>\u8fd9\u5141\u8bb8\u4f8b\u5982\u628a\u5df2\u63d0\u5347\u7684\u5907\u5e93\u56de\u5377\u5230\u65e7\u4e3b\u5e93\u65f6\u95f4\u7ebf\u7684\u67d0\u4e2a\u72b6\u6001\u3002</p>", "text": "\u6539\u8fdbpg_rewind\u4f7f\u5b83\u80fd\u5728\u76ee\u6807\u65f6\u95f4\u7ebf\u66f4\u6539\u65f6\u5de5\u4f5c\uff08Alexander Korotkov\uff09 \u8fd9\u5141\u8bb8\u4f8b\u5982\u628a\u5df2\u63d0\u5347\u7684\u5907\u5e93\u56de\u5377\u5230\u65e7\u4e3b\u5e93\u65f6\u95f4\u7ebf\u7684\u67d0\u4e2a\u72b6\u6001\u3002", "title": "\u6539\u8fdbpg_rewind\u4f7f\u5b83\u80fd\u5728\u76ee\u6807\u65f6\u95f4\u7ebf\u66f4\u6539\u65f6\u5de5\u4f5c", "commits": [], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.13", "source_hash": "a0650a994c4c68f053dd92d81c2bb66f7ae68b4187eb0ce7a379d6ee9216cab9", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["e50cda784"]], "identity_text": "Improve pg_rewind so that it can work when the target timeline changes (Alexander Korotkov) This allows, for example, rewinding a promoted standby back to some state of the old master's timeline.", "commit_aliases": ["e50cda784"], "source_commits": ["e50cda784"], "source_entry_id": "9.6.0/changes/158", "db_id": "9f45bfc149b1bcee561f54517961596d", "patch_ids": ["2e8618ffd2f6844b4bd2978267f094d1"], "statement_hash": "0399c550f5af383753f0b9e0b8d07f31e4833489d16f290586bc902228c47bd3", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-48876cb59a78211a", "migration": false}, {"id": "9.6.0-26d121d4584333c4", "cves": [], "html": "<p>\u79fb\u9664\u8fc7\u65f6\u7684 <code>heap_formtuple</code>/ <code>heap_modifytuple</code>/ <code>heap_deformtuple</code> \u51fd\u6570\uff08Peter Geoghegan\uff09</p>", "text": "\u79fb\u9664\u8fc7\u65f6\u7684 heap_formtuple/ heap_modifytuple/ heap_deformtuple \u51fd\u6570\uff08Peter Geoghegan\uff09", "title": "\u79fb\u9664\u8fc7\u65f6\u7684 heap_formtuple/ heap_modifytuple/ heap_deformtuple \u51fd\u6570", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "c357b39759dce9330bf92d9a5d8723eac8c7fc93533909cc36e2a2dc7fc215a9", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["726117243"]], "identity_text": "Remove obsolete heap_formtuple/heap_modifytuple/heap_deformtuple functions (Peter Geoghegan)", "commit_aliases": ["726117243"], "source_commits": ["726117243"], "source_entry_id": "9.6.0/changes/159", "db_id": "f0a2cdcdea21a4e06e36c3d9dddb3d8b", "patch_ids": ["37e13659833c74f4f01e71bca8e7adfd"], "statement_hash": "90285467a1a01dfd10e6040822e36a37f45c3fab7d9d80eda988d5e049c0c857", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-26d121d4584333c4", "migration": false}, {"id": "9.6.0-e7a59c348a5119a2", "cves": [], "html": "<p>\u6dfb\u52a0\u5b8f\u4f7f <code>AllocSetContextCreate()</code> \u8c03\u7528\u66f4\u7b80\u5355\u3001\u66f4\u5b89\u5168\uff08Tom Lane\uff09</p>\n<p>\u73b0\u5728\u4e0d\u63a8\u8350\u4e3a\u5185\u5b58\u4e0a\u4e0b\u6587\u5199\u51fa\u5404\u4e2a\u5927\u5c0f\u53c2\u6570\uff0c\u6539\u4e3a\u4f7f\u7528\u65b0\u5b8f <code>ALLOCSET_DEFAULT_SIZES</code>\u3001<code>ALLOCSET_SMALL_SIZES</code> \u6216 <code>ALLOCSET_START_SMALL_SIZES</code> \u4e4b\u4e00\u3002\u4f46\u73b0\u6709\u4ee3\u7801\u4ecd\u7136\u5de5\u4f5c\u3002</p>", "text": "\u6dfb\u52a0\u5b8f\u4f7f AllocSetContextCreate() \u8c03\u7528\u66f4\u7b80\u5355\u3001\u66f4\u5b89\u5168\uff08Tom Lane\uff09 \u73b0\u5728\u4e0d\u63a8\u8350\u4e3a\u5185\u5b58\u4e0a\u4e0b\u6587\u5199\u51fa\u5404\u4e2a\u5927\u5c0f\u53c2\u6570\uff0c\u6539\u4e3a\u4f7f\u7528\u65b0\u5b8f ALLOCSET_DEFAULT_SIZES\u3001ALLOCSET_SMALL_SIZES \u6216 ALLOCSET_START_SMALL_SIZES \u4e4b\u4e00\u3002\u4f46\u73b0\u6709\u4ee3\u7801\u4ecd\u7136\u5de5\u4f5c\u3002", "title": "\u6dfb\u52a0\u5b8f\u4f7f AllocSetContextCreate() \u8c03\u7528\u66f4\u7b80\u5355\u3001\u66f4\u5b89\u5168", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "082182dcc79338b8c3c7dc583285f0e617e8523cfc72963db0a558e489754385", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["b9fe6cbc8"]], "identity_text": "Add macros to make AllocSetContextCreate() calls simpler and safer (Tom Lane) Writing out the individual sizing parameters for a memory context is now deprecated in favor of using one of the new macros ALLOCSET_DEFAULT_SIZES, ALLOCSET_SMALL_SIZES, or ALLOCSET_START_SMALL_SIZES. Existing code continues to work, however.", "commit_aliases": ["b9fe6cbc8"], "source_commits": ["b9fe6cbc8"], "source_entry_id": "9.6.0/changes/160", "db_id": "4759d40a7814a2dad5bb4c035a9401f3", "patch_ids": ["161b83a54281885afb4fd13ba33fa738"], "statement_hash": "defe02b3d8e5e538fbbf5c8d5eac3b0cbfcb77262141a48ae3297d05958481ce", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-e7a59c348a5119a2", "migration": false}, {"id": "9.6.0-ca2a43d602dbdb44", "cves": [], "html": "<p>\u5728\u5934\u6587\u4ef6\u4e2d\u65e0\u6761\u4ef6\u4f7f\u7528 <code>static inline</code> \u51fd\u6570\uff08Andres Freund\uff09</p>\n<p>\u8fd9\u5bf9\u975e\u5e38\u8001\u7684\u7f16\u8bd1\u5668\u53ef\u80fd\u5bfc\u81f4\u8b66\u544a\u548c/\u6216\u6d6a\u8d39\u4ee3\u7801\u7a7a\u95f4\uff0c\u4f46\u8bb0\u6cd5\u4e0a\u7684\u6539\u8fdb\u770b\u6765\u503c\u5f97\u3002</p>", "text": "\u5728\u5934\u6587\u4ef6\u4e2d\u65e0\u6761\u4ef6\u4f7f\u7528 static inline \u51fd\u6570\uff08Andres Freund\uff09 \u8fd9\u5bf9\u975e\u5e38\u8001\u7684\u7f16\u8bd1\u5668\u53ef\u80fd\u5bfc\u81f4\u8b66\u544a\u548c/\u6216\u6d6a\u8d39\u4ee3\u7801\u7a7a\u95f4\uff0c\u4f46\u8bb0\u6cd5\u4e0a\u7684\u6539\u8fdb\u770b\u6765\u503c\u5f97\u3002", "title": "\u5728\u5934\u6587\u4ef6\u4e2d\u65e0\u6761\u4ef6\u4f7f\u7528 static inline \u51fd\u6570", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "1298b353bc9086b1f435158654223023548430b1f7460769ec4e987de98a4d41", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["de6fd1c89"]], "identity_text": "Unconditionally use static inline functions in header files (Andres Freund) This may result in warnings and/or wasted code space with very old compilers, but the notational improvement seems worth it.", "commit_aliases": ["de6fd1c89"], "source_commits": ["de6fd1c89"], "source_entry_id": "9.6.0/changes/161", "db_id": "c7099a50a64dd144f7395628d038d302", "patch_ids": ["3c69dbfe63ce38be636306cca9cc3764"], "statement_hash": "bdeed52316acccd7313719eab4b3d16e9ca9975c5799c651981deea63e2972b8", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-ca2a43d602dbdb44", "migration": false}, {"id": "9.6.0-469d348ab7570c54", "cves": [], "html": "<p>\u6539\u8fdb <span>TAP</span> \u6d4b\u8bd5\u57fa\u7840\u8bbe\u65bd\uff08Michael Paquier\u3001Craig Ringer\u3001\u00c1lvaro Herrera\u3001Stephen Frost\uff09</p>\n<p>\u503c\u5f97\u6ce8\u610f\u7684\u662f\uff0c\u73b0\u5728\u53ef\u4ee5\u4f7f\u7528\u6b64\u57fa\u7840\u8bbe\u65bd\u6d4b\u8bd5\u6062\u590d\u573a\u666f\u3002</p>", "text": "\u6539\u8fdb TAP \u6d4b\u8bd5\u57fa\u7840\u8bbe\u65bd\uff08Michael Paquier\u3001Craig Ringer\u3001\u00c1lvaro Herrera\u3001Stephen Frost\uff09 \u503c\u5f97\u6ce8\u610f\u7684\u662f\uff0c\u73b0\u5728\u53ef\u4ee5\u4f7f\u7528\u6b64\u57fa\u7840\u8bbe\u65bd\u6d4b\u8bd5\u6062\u590d\u573a\u666f\u3002", "title": "\u6539\u8fdb TAP \u6d4b\u8bd5\u57fa\u7840\u8bbe\u65bd", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "84608e3eb11f8d4c32f1d5f6fb96042b4552dfba14d6ea5caa7f6ddeb02f28aa", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["13d856e17"], ["1caef31d9"], ["2c83f435a"], ["49148645f"], ["6bd356c33"], ["74d58425c"], ["9821492ee"]], "identity_text": "Improve TAP testing infrastructure (Michael Paquier, Craig Ringer, \u00c1lvaro Herrera, Stephen Frost) Notably, it is now possible to test recovery scenarios using this infrastructure.", "commit_aliases": ["13d856e17", "1caef31d9", "2c83f435a", "49148645f", "6bd356c33", "74d58425c", "9821492ee"], "source_commits": ["13d856e17", "1caef31d9", "2c83f435a", "49148645f", "6bd356c33", "74d58425c", "9821492ee"], "source_entry_id": "9.6.0/changes/162", "db_id": "61125db84b974a5021f4c0c9727bf787", "patch_ids": ["0958de69a0f5e3efaf2081246249447f", "3688721e4e0c50aa25f3d1756f55e2b8", "70f7170202e24e596aaeb3cd74b7ada9", "a341639a67c7a5996d7372c8fc79ab46", "d97fcbf82b092b734e200d1db22e8604", "e242e4b53d52ad5b0dd9e6d2109dcbc3", "f1742d7d634a4bd9a7d7789920eca876"], "statement_hash": "17de13ba6b3868401c308baf4db9ec2e87b62df04763ead0539204e25fa2b5d1", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-469d348ab7570c54", "migration": false}, {"id": "9.6.0-5c864ae8b795ef13", "cves": [], "html": "<p>\u4f7f <code>trace_lwlocks</code> \u6309\u540d\u79f0\u6807\u8bc6\u5404\u4e2a\u9501\uff08Robert Haas\uff09</p>", "text": "\u4f7f trace_lwlocks \u6309\u540d\u79f0\u6807\u8bc6\u5404\u4e2a\u9501\uff08Robert Haas\uff09", "title": "\u4f7f trace_lwlocks \u6309\u540d\u79f0\u6807\u8bc6\u5404\u4e2a\u9501", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "2e59ddac0ea4441fde32c0146110d298721b3c15c503e5df639bc8fdfb9cede2", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["aa65de042"]], "identity_text": "Make trace_lwlocks identify individual locks by name (Robert Haas)", "commit_aliases": ["aa65de042"], "source_commits": ["aa65de042"], "source_entry_id": "9.6.0/changes/163", "db_id": "f24385f77895f417a6a5ed4f410d74cd", "patch_ids": ["5eee474d7a8ce8627c7247154fa75863"], "statement_hash": "6e7bf097111eae1f391880564cd0c1838831230a9ee38a4a9e1dd2cc538e6837", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-5c864ae8b795ef13", "migration": false}, {"id": "9.6.0-6896354ce5caddff", "cves": [], "html": "<p>\u6539\u8fdb <span>psql</span> \u7684 Tab \u8865\u5168\u4ee3\u7801\u57fa\u7840\u8bbe\u65bd\uff08Thomas Munro\u3001Michael Paquier\uff09</p>\n<p>Tab \u8865\u5168\u89c4\u5219\u73b0\u5728\u7f16\u5199\u8d77\u6765\u76f8\u5f53\u5bb9\u6613\uff0c\u4e5f\u66f4\u7d27\u51d1\u3002</p>", "text": "\u6539\u8fdb psql \u7684 Tab \u8865\u5168\u4ee3\u7801\u57fa\u7840\u8bbe\u65bd\uff08Thomas Munro\u3001Michael Paquier\uff09 Tab \u8865\u5168\u89c4\u5219\u73b0\u5728\u7f16\u5199\u8d77\u6765\u76f8\u5f53\u5bb9\u6613\uff0c\u4e5f\u66f4\u7d27\u51d1\u3002", "title": "\u6539\u8fdb psql \u7684 Tab \u8865\u5168\u4ee3\u7801\u57fa\u7840\u8bbe\u65bd", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "ba9f9dfd295ae89d9bd3b7863e68b73e983f8967698d14aead1b23b3c6c4eb11", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["4f18010af"], ["9b181b036"], ["d37b816dc"]], "identity_text": "Improve psql's tab-completion code infrastructure (Thomas Munro, Michael Paquier) Tab-completion rules are now considerably easier to write, and more compact.", "commit_aliases": ["4f18010af", "9b181b036", "d37b816dc"], "source_commits": ["4f18010af", "9b181b036", "d37b816dc"], "source_entry_id": "9.6.0/changes/164", "db_id": "7822450da9bb8d4fd413cd7a52b69672", "patch_ids": ["0c14ec70ff58700a98ab27d93c0ce134", "8581fae928b6a545d76bab5b75999bfe", "e983c34028cd907641a97a9f249303ef"], "statement_hash": "ec0e88726bf401e0419e4ccd19fdb4b59677d2706083c9ced873ca2d1fcf0a7e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-6896354ce5caddff", "migration": false}, {"id": "9.6.0-9b3d2742cde8314d", "cves": [], "html": "<p>\u628a <code>pg_shseclabel</code> \u7cfb\u7edf\u76ee\u5f55\u9489\u5165\u7f13\u5b58\uff0c\u4f7f\u5b83\u5728\u8fde\u63a5\u8ba4\u8bc1\u671f\u95f4\u53ef\u88ab\u8bbf\u95ee\uff08Adam Brightwell\uff09</p>\n<p>\u6838\u5fc3\u4ee3\u7801\u4e0d\u628a\u6b64\u76ee\u5f55\u7528\u4e8e\u8ba4\u8bc1\uff0c\u4f46\u6269\u5c55\u53ef\u80fd\u5e0c\u671b\u67e5\u8be2\u5b83\u3002</p>", "text": "\u628a pg_shseclabel \u7cfb\u7edf\u76ee\u5f55\u9489\u5165\u7f13\u5b58\uff0c\u4f7f\u5b83\u5728\u8fde\u63a5\u8ba4\u8bc1\u671f\u95f4\u53ef\u88ab\u8bbf\u95ee\uff08Adam Brightwell\uff09 \u6838\u5fc3\u4ee3\u7801\u4e0d\u628a\u6b64\u76ee\u5f55\u7528\u4e8e\u8ba4\u8bc1\uff0c\u4f46\u6269\u5c55\u53ef\u80fd\u5e0c\u671b\u67e5\u8be2\u5b83\u3002", "title": "\u628a pg_shseclabel \u7cfb\u7edf\u76ee\u5f55\u9489\u5165\u7f13\u5b58\uff0c\u4f7f\u5b83\u5728\u8fde\u63a5\u8ba4\u8bc1\u671f\u95f4\u53ef\u88ab\u8bbf\u95ee", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "192a2f55e5a57044d2b3981cbcdd25e0564d1905c3118c0b4dd3a16197a0252b", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["efa318bcf"]], "identity_text": "Nail the pg_shseclabel system catalog into cache, so that it is available for access during connection authentication (Adam Brightwell) The core code does not use this catalog for authentication, but extensions might wish to consult it.", "commit_aliases": ["efa318bcf"], "source_commits": ["efa318bcf"], "source_entry_id": "9.6.0/changes/165", "db_id": "794ad65e50ffc1e3d60deaa17f91f105", "patch_ids": ["2bdd8ed10ca5eb1155838154eb251e8f"], "statement_hash": "715664dbcc9dec7f4450256c63f3f061fa85d8789f67fa6f54bdfbf6649b6f8d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-9b3d2742cde8314d", "migration": false}, {"id": "9.6.0-861fd4e656e5cd5f", "cves": [], "html": "<p>\u91cd\u6784<a href=\"/docs/9.6/indexam.html\" title=\"\u7b2c\u00a059\u00a0\u7ae0\u00a0\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5\u63a5\u53e3\u5b9a\u4e49\">\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5 <acronym>API</acronym></a>\uff0c\u5728 <span>C</span> \u5c42\u9762\u9690\u85cf\u5176\u5927\u90e8\u5206\uff08Alexander Korotkov\u3001Andrew Gierth\uff09</p>\n<p>\u6b64\u66f4\u6539\u628a\u7d22\u5f15 <acronym>AM API</acronym> \u73b0\u4ee3\u5316\uff0c\u4f7f\u5176\u770b\u8d77\u6765\u66f4\u50cf\u6211\u4eec\u4e3a\u5916\u90e8\u6570\u636e\u5305\u88c5\u5668\u548c tablesample \u5904\u7406\u5668\u91c7\u7528\u7684\u8bbe\u8ba1\u3002\u8fd9\u7b80\u5316\u4e86 <span>C</span> \u4ee3\u7801\u5e76\u4f7f\u5728\u53ef\u5b89\u88c5\u6269\u5c55\u4e2d\u5b9a\u4e49\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5\u5b9e\u9645\u53ef\u884c\u3002\u7ed3\u679c\u662f <code>pg_am</code> \u7cfb\u7edf\u76ee\u5f55\u7684\u5927\u591a\u6570\u5217\u6d88\u5931\u4e86\u3002\u6dfb\u52a0\u4e86\u65b0\u7684<a href=\"/docs/9.6/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE\" title=\"\u8868\u00a09.62.\u00a0\u7cfb\u7edf\u76ee\u5f55\u4fe1\u606f\u51fd\u6570\">\u68c0\u67e5\u51fd\u6570</a>\uff0c\u5141\u8bb8 SQL \u67e5\u8be2\u786e\u5b9a\u4ee5\u524d\u53ef\u4ee5\u4ece <code>pg_am</code> \u53d1\u73b0\u7684\u7d22\u5f15 AM \u5c5e\u6027\u3002\u3002</p>", "text": "\u91cd\u6784\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5 API\uff0c\u5728 C \u5c42\u9762\u9690\u85cf\u5176\u5927\u90e8\u5206\uff08Alexander Korotkov\u3001Andrew Gierth\uff09 \u6b64\u66f4\u6539\u628a\u7d22\u5f15 AM API \u73b0\u4ee3\u5316\uff0c\u4f7f\u5176\u770b\u8d77\u6765\u66f4\u50cf\u6211\u4eec\u4e3a\u5916\u90e8\u6570\u636e\u5305\u88c5\u5668\u548c tablesample \u5904\u7406\u5668\u91c7\u7528\u7684\u8bbe\u8ba1\u3002\u8fd9\u7b80\u5316\u4e86 C \u4ee3\u7801\u5e76\u4f7f\u5728\u53ef\u5b89\u88c5\u6269\u5c55\u4e2d\u5b9a\u4e49\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5\u5b9e\u9645\u53ef\u884c\u3002\u7ed3\u679c\u662f pg_am \u7cfb\u7edf\u76ee\u5f55\u7684\u5927\u591a\u6570\u5217\u6d88\u5931\u4e86\u3002\u6dfb\u52a0\u4e86\u65b0\u7684\u68c0\u67e5\u51fd\u6570\uff0c\u5141\u8bb8 SQL \u67e5\u8be2\u786e\u5b9a\u4ee5\u524d\u53ef\u4ee5\u4ece pg_am \u53d1\u73b0\u7684\u7d22\u5f15 AM \u5c5e\u6027\u3002\u3002", "title": "\u91cd\u6784\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5 API\uff0c\u5728 C \u5c42\u9762\u9690\u85cf\u5176\u5927\u90e8\u5206", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "5bdb3c6c3c930659415c8d86af0d4128245ac2df2ee937822d052fc70bba009f", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["65c5fcd35"], ["be44ed27b"], ["ed0097e4f"]], "identity_text": "Restructure index access method API to hide most of it at the C level (Alexander Korotkov, Andrew Gierth) This change modernizes the index AM API to look more like the designs we have adopted for foreign data wrappers and tablesample handlers. This simplifies the C code and makes it much more practical to define index access methods in installable extensions. A consequence is that most of the columns of the pg_am system catalog have disappeared. New inspection functions have been added to allow SQL queries to determine index AM properties that used to be discoverable from pg_am.", "commit_aliases": ["65c5fcd35", "be44ed27b", "ed0097e4f"], "source_commits": ["65c5fcd35", "be44ed27b", "ed0097e4f"], "source_entry_id": "9.6.0/changes/166", "db_id": "bd5713f7098a53ff35a9c98f457dc69c", "patch_ids": ["4df956701b34c2186ad4449976c70fbe", "9f4bee7c3a09cc9e625b87fcaa0fa649", "a1ef37d612cff13aa30bc998f37db0b0"], "statement_hash": "51920b7d58ee13e52a3c43058d65f63b18157ec66bc5b8b82a41618f65344b5f", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-861fd4e656e5cd5f", "migration": false}, {"id": "9.6.0-7e9e8261d9d22bfe", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/catalog-pg-init-privs.html\" title=\"50.28.\u00a0pg_init_privs\"><code>pg_init_privs</code></a> \u7cfb\u7edf\u76ee\u5f55\u4ee5\u4fdd\u5b58 <span>initdb</span> \u521b\u5efa\u548c\u6269\u5c55\u521b\u5efa\u5bf9\u8c61\u7684\u539f\u59cb\u6743\u9650\uff08Stephen Frost\uff09</p>\n<p>\u6b64\u57fa\u7840\u8bbe\u65bd\u5141\u8bb8 <span>pg_dump</span> \u8f6c\u50a8\u5b89\u88c5\u53ef\u80fd\u5bf9\u9644\u52a0\u5230\u7cfb\u7edf\u5bf9\u8c61\u7684\u6743\u9650\u6240\u505a\u7684\u66f4\u6539\u3002\u4ee5\u524d\u8fd9\u79cd\u66f4\u6539\u5728\u8f6c\u50a8\u548c\u91cd\u65b0\u88c5\u8f7d\u4e2d\u4e22\u5931\uff0c\u4f46\u73b0\u5728\u88ab\u4fdd\u7559\u3002</p>", "text": "\u6dfb\u52a0 pg_init_privs \u7cfb\u7edf\u76ee\u5f55\u4ee5\u4fdd\u5b58 initdb \u521b\u5efa\u548c\u6269\u5c55\u521b\u5efa\u5bf9\u8c61\u7684\u539f\u59cb\u6743\u9650\uff08Stephen Frost\uff09 \u6b64\u57fa\u7840\u8bbe\u65bd\u5141\u8bb8 pg_dump \u8f6c\u50a8\u5b89\u88c5\u53ef\u80fd\u5bf9\u9644\u52a0\u5230\u7cfb\u7edf\u5bf9\u8c61\u7684\u6743\u9650\u6240\u505a\u7684\u66f4\u6539\u3002\u4ee5\u524d\u8fd9\u79cd\u66f4\u6539\u5728\u8f6c\u50a8\u548c\u91cd\u65b0\u88c5\u8f7d\u4e2d\u4e22\u5931\uff0c\u4f46\u73b0\u5728\u88ab\u4fdd\u7559\u3002", "title": "\u6dfb\u52a0 pg_init_privs \u7cfb\u7edf\u76ee\u5f55\u4ee5\u4fdd\u5b58 initdb \u521b\u5efa\u548c\u6269\u5c55\u521b\u5efa\u5bf9\u8c61\u7684\u539f\u59cb\u6743\u9650", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "d22a07d867d639ab6ac9e1067b6d8b449bf6069fb814045e086c7fa29db799a6", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["6c268df12"]], "identity_text": "Add pg_init_privs system catalog to hold original privileges of initdb-created and extension-created objects (Stephen Frost) This infrastructure allows pg_dump to dump changes that an installation may have made in privileges attached to system objects. Formerly, such changes would be lost in a dump and reload, but now they are preserved.", "commit_aliases": ["6c268df12"], "source_commits": ["6c268df12"], "source_entry_id": "9.6.0/changes/167", "db_id": "18975fccb1e29ff36bcfde8de7f7b866", "patch_ids": ["e10395ddea0991d44fb3bd1a71635d1f"], "statement_hash": "ecd532fa260abdc0364e1c585102555a58522f2b1474cd6ed576903aa7db6ef0", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-7e9e8261d9d22bfe", "migration": false}, {"id": "9.6.0-d34f5764eb365c70", "cves": [], "html": "<p>\u66f4\u6539\u6269\u5c55\u5206\u914d\u81ea\u5b9a\u4e49 <code>LWLock</code> \u7684\u65b9\u5f0f\uff08Amit Kapila\u3001Robert Haas\uff09</p>\n<p><code>RequestAddinLWLocks()</code> \u51fd\u6570\u88ab\u79fb\u9664\uff0c\u66ff\u6362\u4e3a <code>RequestNamedLWLockTranche()</code>\u3002\u8fd9\u5141\u8bb8\u66f4\u597d\u5730\u6807\u8bc6\u81ea\u5b9a\u4e49 <code>LWLock</code>\uff0c\u4e5f\u66f4\u4e0d\u5bb9\u6613\u51fa\u9519\u3002</p>", "text": "\u66f4\u6539\u6269\u5c55\u5206\u914d\u81ea\u5b9a\u4e49 LWLock \u7684\u65b9\u5f0f\uff08Amit Kapila\u3001Robert Haas\uff09 RequestAddinLWLocks() \u51fd\u6570\u88ab\u79fb\u9664\uff0c\u66ff\u6362\u4e3a RequestNamedLWLockTranche()\u3002\u8fd9\u5141\u8bb8\u66f4\u597d\u5730\u6807\u8bc6\u81ea\u5b9a\u4e49 LWLock\uff0c\u4e5f\u66f4\u4e0d\u5bb9\u6613\u51fa\u9519\u3002", "title": "\u66f4\u6539\u6269\u5c55\u5206\u914d\u81ea\u5b9a\u4e49 LWLock \u7684\u65b9\u5f0f", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "dfbb66c598a98c07b4ea49c050e5ef34a71786cbdc06233bb94af3e7582523ac", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["c1772ad92"]], "identity_text": "Change the way that extensions allocate custom LWLocks (Amit Kapila, Robert Haas) The RequestAddinLWLocks() function is removed, and replaced by RequestNamedLWLockTranche(). This allows better identification of custom LWLocks, and is less error-prone.", "commit_aliases": ["c1772ad92"], "source_commits": ["c1772ad92"], "source_entry_id": "9.6.0/changes/168", "db_id": "0a845106f3d95f517c85b14667cbbbfa", "patch_ids": ["f9c844c2e935d93d247b134a0e127d3a"], "statement_hash": "5f8f25c6454b43a1c647e4073fda0244e1028e1441d54613f4bd00a2a8cfd901", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-d34f5764eb365c70", "migration": false}, {"id": "9.6.0-712789ebed846123", "cves": [], "html": "<p>\u6539\u8fdb\u9694\u79bb\u6d4b\u8bd5\u5668\u4ee5\u5141\u8bb8\u591a\u4e2a\u4f1a\u8bdd\u5e76\u53d1\u7b49\u5f85\uff0c\u5141\u8bb8\u6d4b\u8bd5\u6b7b\u9501\u573a\u666f\uff08Robert Haas\uff09</p>", "text": "\u6539\u8fdb\u9694\u79bb\u6d4b\u8bd5\u5668\u4ee5\u5141\u8bb8\u591a\u4e2a\u4f1a\u8bdd\u5e76\u53d1\u7b49\u5f85\uff0c\u5141\u8bb8\u6d4b\u8bd5\u6b7b\u9501\u573a\u666f\uff08Robert Haas\uff09", "title": "\u6539\u8fdb\u9694\u79bb\u6d4b\u8bd5\u5668\u4ee5\u5141\u8bb8\u591a\u4e2a\u4f1a\u8bdd\u5e76\u53d1\u7b49\u5f85\uff0c\u5141\u8bb8\u6d4b\u8bd5\u6b7b\u9501\u573a\u666f", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "eb9c176f037319d8a23ec27147c26a8e262eeb4c85f548aa830d79af527be992", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["38f8bdcac"]], "identity_text": "Improve the isolation tester to allow multiple sessions to wait concurrently, allowing testing of deadlock scenarios (Robert Haas)", "commit_aliases": ["38f8bdcac"], "source_commits": ["38f8bdcac"], "source_entry_id": "9.6.0/changes/169", "db_id": "54419d5ac4e4d764d1a4f8b8548b140b", "patch_ids": ["eb278b5d04f70297bbcbcaffee4d6db5"], "statement_hash": "19c8c2618b52aa779abadb20ad8f4c9cabd7c3476806d239a387ecfdd4f6bc49", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-712789ebed846123", "migration": false}, {"id": "9.6.0-d643ac89d8dcc9b6", "cves": [], "html": "<p>\u5f15\u5165\u53ef\u6269\u5c55\u8282\u70b9\u7c7b\u578b\uff08KaiGai Kohei\uff09</p>\n<p>\u6b64\u66f4\u6539\u5141\u8bb8 <span>FDW</span> \u6216\u81ea\u5b9a\u4e49\u626b\u63cf\u63d0\u4f9b\u8005\u4ee5\u6bd4\u4ee5\u524d\u66f4\u65b9\u4fbf\u7684\u683c\u5f0f\u5728\u8ba1\u5212\u6811\u4e2d\u5b58\u50a8\u6570\u636e\u3002</p>", "text": "\u5f15\u5165\u53ef\u6269\u5c55\u8282\u70b9\u7c7b\u578b\uff08KaiGai Kohei\uff09 \u6b64\u66f4\u6539\u5141\u8bb8 FDW \u6216\u81ea\u5b9a\u4e49\u626b\u63cf\u63d0\u4f9b\u8005\u4ee5\u6bd4\u4ee5\u524d\u66f4\u65b9\u4fbf\u7684\u683c\u5f0f\u5728\u8ba1\u5212\u6811\u4e2d\u5b58\u50a8\u6570\u636e\u3002", "title": "\u5f15\u5165\u53ef\u6269\u5c55\u8282\u70b9\u7c7b\u578b", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "692ecfedc515eed5db0e553166e427bd563bb871ed44c1ddd9056a0a7e18257b", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["bcac23de7"]], "identity_text": "Introduce extensible node types (KaiGai Kohei) This change allows FDWs or custom scan providers to store data in a plan tree in a more convenient format than was previously possible.", "commit_aliases": ["bcac23de7"], "source_commits": ["bcac23de7"], "source_entry_id": "9.6.0/changes/170", "db_id": "a43569a0e5931ed2608dcc2fd2afab87", "patch_ids": ["2de30cfb69e17ee58c30f523608367a5"], "statement_hash": "7a493d72b44536adc8c6feaf844649eb4457d69fd1b0eb3e8f99a123019022f4", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-d643ac89d8dcc9b6", "migration": false}, {"id": "9.6.0-6809eff690baaebd", "cves": [], "html": "<p>\u4f7f\u89c4\u5212\u5668\u901a\u8fc7\u751f\u6210\u548c\u6bd4\u8f83 <code>Path</code> \u6765\u5904\u7406\u626b\u63cf/\u8fde\u63a5\u4e4b\u540e\u7684\u67e5\u8be2\u6b65\u9aa4\uff0c\u66ff\u6362\u5927\u91cf\u7279\u8bbe\u903b\u8f91\uff08Tom Lane\uff09</p>\n<p>\u6b64\u66f4\u6539\u4eca\u5929\u53ea\u63d0\u4f9b\u8fb9\u9645\u7684\u7528\u6237\u53ef\u89c1\u6539\u8fdb\uff0c\u4f46\u5b83\u4f7f\u5c06\u6765\u8bb8\u591a\u4e0a\u5c42\u89c4\u5212\u5668\u6539\u8fdb\u6210\u4e3a\u53ef\u80fd\uff0c\u8fd9\u4e9b\u5728\u65e7\u4ee3\u7801\u7ed3\u6784\u4e0b\u4e0d\u5207\u5b9e\u9645\u3002</p>", "text": "\u4f7f\u89c4\u5212\u5668\u901a\u8fc7\u751f\u6210\u548c\u6bd4\u8f83 Path \u6765\u5904\u7406\u626b\u63cf/\u8fde\u63a5\u4e4b\u540e\u7684\u67e5\u8be2\u6b65\u9aa4\uff0c\u66ff\u6362\u5927\u91cf\u7279\u8bbe\u903b\u8f91\uff08Tom Lane\uff09 \u6b64\u66f4\u6539\u4eca\u5929\u53ea\u63d0\u4f9b\u8fb9\u9645\u7684\u7528\u6237\u53ef\u89c1\u6539\u8fdb\uff0c\u4f46\u5b83\u4f7f\u5c06\u6765\u8bb8\u591a\u4e0a\u5c42\u89c4\u5212\u5668\u6539\u8fdb\u6210\u4e3a\u53ef\u80fd\uff0c\u8fd9\u4e9b\u5728\u65e7\u4ee3\u7801\u7ed3\u6784\u4e0b\u4e0d\u5207\u5b9e\u9645\u3002", "title": "\u4f7f\u89c4\u5212\u5668\u901a\u8fc7\u751f\u6210\u548c\u6bd4\u8f83 Path \u6765\u5904\u7406\u626b\u63cf/\u8fde\u63a5\u4e4b\u540e\u7684\u67e5\u8be2\u6b65\u9aa4\uff0c\u66ff\u6362\u5927\u91cf\u7279\u8bbe\u903b\u8f91", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "0bc91b83b0b0a8a698e2f77e50d950b8a3d6ce08dac641085f8a141700322b6a", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["19a541143"], ["3fc6e2d7f"], ["5ce5e4a12"], ["68fa28f77"], ["9e703987a"], ["c44d01383"]], "identity_text": "Make the planner deal with post-scan/join query steps by generating and comparing Paths, replacing a lot of ad-hoc logic (Tom Lane) This change provides only marginal user-visible improvements today, but it enables future work on a lot of upper-planner improvements that were impractical to tackle using the old code structure.", "commit_aliases": ["19a541143", "3fc6e2d7f", "5ce5e4a12", "68fa28f77", "9e703987a", "c44d01383"], "source_commits": ["19a541143", "3fc6e2d7f", "5ce5e4a12", "68fa28f77", "9e703987a", "c44d01383"], "source_entry_id": "9.6.0/changes/171", "db_id": "ec1dd59505ee107e7359d1672520b5f0", "patch_ids": ["5b6cebbf78077a0ef941c324cf9defa4", "a05dfc48ea46fdffa98a3d96af9ea6de", "b308f676581382c8cef0f5a4165452eb", "c562debd6956d2878526c112b90470ad", "e531d13f4f4cfcc0e7d5c92048aa3bd1", "fad0ea6b379e68a23e721b500afe5c98"], "statement_hash": "e23bbac096ff7d1c6c656b31f7a28e9061bfc8bd0410f3497948c85491dba2d2", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-6809eff690baaebd", "migration": false}, {"id": "9.6.0-e4953ca7240a1994", "cves": [], "html": "<p>\u652f\u6301\u90e8\u5206\u805a\u5408\uff08David Rowley\u3001Simon Riggs\uff09</p>\n<p>\u6b64\u66f4\u6539\u5141\u8bb8\u628a\u805a\u5408\u51fd\u6570\u7684\u8ba1\u7b97\u62c6\u5206\u4e3a\u5355\u72ec\u7684\u90e8\u5206\uff0c\u4f8b\u5982\u4f7f\u5e76\u884c\u5de5\u4f5c\u8005\u8fdb\u7a0b\u80fd\u591f\u534f\u4f5c\u8ba1\u7b97\u805a\u5408\u3002\u5c06\u6765\u5b83\u53ef\u80fd\u5141\u8bb8\u8de8\u672c\u5730\u548c\u8fdc\u7a0b\u6570\u636e\u7684\u805a\u5408\u90e8\u5206\u5728\u8fdc\u7a0b\u7aef\u53d1\u751f\u3002</p>", "text": "\u652f\u6301\u90e8\u5206\u805a\u5408\uff08David Rowley\u3001Simon Riggs\uff09 \u6b64\u66f4\u6539\u5141\u8bb8\u628a\u805a\u5408\u51fd\u6570\u7684\u8ba1\u7b97\u62c6\u5206\u4e3a\u5355\u72ec\u7684\u90e8\u5206\uff0c\u4f8b\u5982\u4f7f\u5e76\u884c\u5de5\u4f5c\u8005\u8fdb\u7a0b\u80fd\u591f\u534f\u4f5c\u8ba1\u7b97\u805a\u5408\u3002\u5c06\u6765\u5b83\u53ef\u80fd\u5141\u8bb8\u8de8\u672c\u5730\u548c\u8fdc\u7a0b\u6570\u636e\u7684\u805a\u5408\u90e8\u5206\u5728\u8fdc\u7a0b\u7aef\u53d1\u751f\u3002", "title": "\u652f\u6301\u90e8\u5206\u805a\u5408", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "1ea945e55f279fe59b00146837de8ec76b891d5f728a7989a068c45388fae57c", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["19e972d55"], ["a7de3dc5c"], ["f8ace5477"]], "identity_text": "Support partial aggregation (David Rowley, Simon Riggs) This change allows the computation of an aggregate function to be split into separate parts, for example so that parallel worker processes can cooperate on computing an aggregate. In future it might allow aggregation across local and remote data to occur partially on the remote end.", "commit_aliases": ["19e972d55", "a7de3dc5c", "f8ace5477"], "source_commits": ["19e972d55", "a7de3dc5c", "f8ace5477"], "source_entry_id": "9.6.0/changes/172", "db_id": "66665187ccc648ba7f9383815677ad16", "patch_ids": ["552a016ffa412b9d5dc44eb3721c0f5c", "697ba33153f44012e2359ba6bdd8c483", "e63a6c819bd9fc45310334dbd00860e1"], "statement_hash": "a0945b4fdb8037a0d205b3f53c56a6a73077f6eb460ede4195208977a1473fd0", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-e4953ca7240a1994", "migration": false}, {"id": "9.6.0-404f777e691455ce", "cves": [], "html": "<p>\u6dfb\u52a0\u901a\u7528\u547d\u4ee4\u8fdb\u5ea6\u62a5\u544a\u8bbe\u65bd\uff08Vinayak Pokale\u3001Rahila Syed\u3001Amit Langote\u3001Robert Haas\uff09</p>", "text": "\u6dfb\u52a0\u901a\u7528\u547d\u4ee4\u8fdb\u5ea6\u62a5\u544a\u8bbe\u65bd\uff08Vinayak Pokale\u3001Rahila Syed\u3001Amit Langote\u3001Robert Haas\uff09", "title": "\u6dfb\u52a0\u901a\u7528\u547d\u4ee4\u8fdb\u5ea6\u62a5\u544a\u8bbe\u65bd", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "51a2d63c8acfa1691f990d89989a208ed7797287197bce106a970c818389bed1", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["b6fb6471f"]], "identity_text": "Add a generic command progress reporting facility (Vinayak Pokale, Rahila Syed, Amit Langote, Robert Haas)", "commit_aliases": ["b6fb6471f"], "source_commits": ["b6fb6471f"], "source_entry_id": "9.6.0/changes/173", "db_id": "11dc7df3d8408fdd6f60777ea61005b0", "patch_ids": ["0ad73226a1ca22a8d9fbb6c28ad66647"], "statement_hash": "3b10d65efb14910a51c4e098b61b86356ae8baf96d3f0fa824e0e985b0d53a02", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-404f777e691455ce", "migration": false}, {"id": "9.6.0-d833ba7bc6bf52b4", "cves": [], "html": "<p>\u628a <span>psql</span> \u7684 <span>flex</span> \u8bcd\u6cd5\u5206\u6790\u5668\u5206\u79bb\u51fa\u6765\u4f9b\u5176\u4ed6\u5ba2\u6237\u7aef\u7a0b\u5e8f\u4f7f\u7528\uff08Tom Lane\u3001Kyotaro Horiguchi\uff09</p>\n<p>\u8fd9\u6d88\u9664\u4e86\u9700\u8981\u80fd\u591f\u5f88\u597d\u5730\u89e3\u6790 SQL \u547d\u4ee4\u4ee5\u8bc6\u522b\u547d\u4ee4\u8fb9\u754c\u7684\u7a0b\u5e8f\u4e2d\u7684\u4ee3\u7801\u91cd\u590d\u3002\u4ee5\u5b8c\u6574\u7684\u4e00\u822c\u6027\u505a\u5230\u8fd9\u4e00\u70b9\u6bd4\u4eba\u4eec\u5e0c\u671b\u7684\u66f4\u75db\u82e6\uff0c\u5230\u76ee\u524d\u4e3a\u6b62\u5728\u6211\u4eec\u652f\u6301\u7684\u5ba2\u6237\u7aef\u7a0b\u5e8f\u4e2d\u53ea\u6709 <span>psql</span> \u771f\u6b63\u505a\u5bf9\u4e86\u3002</p>\n<p>\u521b\u5efa\u4e86\u65b0\u7684\u6e90\u4ee3\u7801\u5b50\u76ee\u5f55 <code>src/fe_utils/</code> \u6765\u4fdd\u5b58\u8fd9\u4e2a\u548c\u5176\u4ed6\u5728\u5ba2\u6237\u7aef\u7a0b\u5e8f\u4e4b\u95f4\u5171\u4eab\u7684\u4ee3\u7801\u3002\u4ee5\u524d\u8fd9\u79cd\u5171\u4eab\u662f\u901a\u8fc7\u5728\u6784\u5efa\u65f6\u7b26\u53f7\u94fe\u63a5\u6216\u590d\u5236\u6e90\u6587\u4ef6\u5b8c\u6210\u7684\uff0c\u8fd9\u5f88\u4e11\u964b\u4e14\u9700\u8981\u91cd\u590d\u7f16\u8bd1\u3002</p>", "text": "\u628a psql \u7684 flex \u8bcd\u6cd5\u5206\u6790\u5668\u5206\u79bb\u51fa\u6765\u4f9b\u5176\u4ed6\u5ba2\u6237\u7aef\u7a0b\u5e8f\u4f7f\u7528\uff08Tom Lane\u3001Kyotaro Horiguchi\uff09 \u8fd9\u6d88\u9664\u4e86\u9700\u8981\u80fd\u591f\u5f88\u597d\u5730\u89e3\u6790 SQL \u547d\u4ee4\u4ee5\u8bc6\u522b\u547d\u4ee4\u8fb9\u754c\u7684\u7a0b\u5e8f\u4e2d\u7684\u4ee3\u7801\u91cd\u590d\u3002\u4ee5\u5b8c\u6574\u7684\u4e00\u822c\u6027\u505a\u5230\u8fd9\u4e00\u70b9\u6bd4\u4eba\u4eec\u5e0c\u671b\u7684\u66f4\u75db\u82e6\uff0c\u5230\u76ee\u524d\u4e3a\u6b62\u5728\u6211\u4eec\u652f\u6301\u7684\u5ba2\u6237\u7aef\u7a0b\u5e8f\u4e2d\u53ea\u6709 psql \u771f\u6b63\u505a\u5bf9\u4e86\u3002 \u521b\u5efa\u4e86\u65b0\u7684\u6e90\u4ee3\u7801\u5b50\u76ee\u5f55 src/fe_utils/ \u6765\u4fdd\u5b58\u8fd9\u4e2a\u548c\u5176\u4ed6\u5728\u5ba2\u6237\u7aef\u7a0b\u5e8f\u4e4b\u95f4\u5171\u4eab\u7684\u4ee3\u7801\u3002\u4ee5\u524d\u8fd9\u79cd\u5171\u4eab\u662f\u901a\u8fc7\u5728\u6784\u5efa\u65f6\u7b26\u53f7\u94fe\u63a5\u6216\u590d\u5236\u6e90\u6587\u4ef6\u5b8c\u6210\u7684\uff0c\u8fd9\u5f88\u4e11\u964b\u4e14\u9700\u8981\u91cd\u590d\u7f16\u8bd1\u3002", "title": "\u628a psql \u7684 flex \u8bcd\u6cd5\u5206\u6790\u5668\u5206\u79bb\u51fa\u6765\u4f9b\u5176\u4ed6\u5ba2\u6237\u7aef\u7a0b\u5e8f\u4f7f\u7528", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "99c5ed52e196691f7d572babd398014a9fe21ce77cfcd2a0ac94186fa711fc0d", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["0ea9efbe9"], ["27199058d"], ["588d963b0"], ["b6afae71a"], ["c1156411a"], ["d65bea26a"]], "identity_text": "Separate out psql's flex lexer to make it usable by other client programs (Tom Lane, Kyotaro Horiguchi) This eliminates code duplication for programs that need to be able to parse SQL commands well enough to identify command boundaries. Doing that in full generality is more painful than one could wish, and up to now only psql has really gotten it right among our supported client programs. A new source-code subdirectory src/fe_utils/ has been created to hold this and other code that is shared across our client programs. Formerly such sharing was accomplished by symbolic linking or copying source files at build time, which was ugly and required duplicate compilation.", "commit_aliases": ["0ea9efbe9", "27199058d", "588d963b0", "b6afae71a", "c1156411a", "d65bea26a"], "source_commits": ["0ea9efbe9", "27199058d", "588d963b0", "b6afae71a", "c1156411a", "d65bea26a"], "source_entry_id": "9.6.0/changes/174", "db_id": "cf1ecbcf96f1a64f3d4c7293ace49a6a", "patch_ids": ["04450d49188f661336bba6f6dea3a40b", "864d67497b03fba0958be422b6f12792", "b0f9b1dee201104970e45d79afb63815", "b680d374b5a4d6440baa7833b3b7a223", "d1cc0f86d505da6d709fb223cbbb55c2", "ecf5b4549f8252e85cd17d8f91e878c6"], "statement_hash": "7acc6a13e0479dc231b199ac8403776da3ea59e1d60584b2f590c3219ebd9745", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-d833ba7bc6bf52b4", "migration": false}, {"id": "9.6.0-f804fee2e344a11c", "cves": [], "html": "<p>\u5f15\u5165 <code>WaitEventSet</code> <acronym>API</acronym> \u4ee5\u5141\u8bb8\u9ad8\u6548\u7b49\u5f85\u901a\u5e38\u4e0d\u4f1a\u5728\u4e24\u6b21\u7b49\u5f85\u4e4b\u95f4\u66f4\u6539\u7684\u4e8b\u4ef6\u96c6\uff08Andres Freund\u3001Amit Kapila\uff09</p>", "text": "\u5f15\u5165 WaitEventSet API \u4ee5\u5141\u8bb8\u9ad8\u6548\u7b49\u5f85\u901a\u5e38\u4e0d\u4f1a\u5728\u4e24\u6b21\u7b49\u5f85\u4e4b\u95f4\u66f4\u6539\u7684\u4e8b\u4ef6\u96c6\uff08Andres Freund\u3001Amit Kapila\uff09", "title": "\u5f15\u5165 WaitEventSet API \u4ee5\u5141\u8bb8\u9ad8\u6548\u7b49\u5f85\u901a\u5e38\u4e0d\u4f1a\u5728\u4e24\u6b21\u7b49\u5f85\u4e4b\u95f4\u66f4\u6539\u7684\u4e8b\u4ef6\u96c6", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "87676fb675a779fd318e675775eedba9fa07d28091c33724761243bf8e4715c5", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["98a64d0bd"]], "identity_text": "Introduce WaitEventSet API to allow efficient waiting for event sets that usually do not change from one wait to the next (Andres Freund, Amit Kapila)", "commit_aliases": ["98a64d0bd"], "source_commits": ["98a64d0bd"], "source_entry_id": "9.6.0/changes/175", "db_id": "0856bdc40fcfeac66ca4d6244ce28b38", "patch_ids": ["6da149fbc1c8ce20b6cc7714f1f0bf77"], "statement_hash": "c97c6df346299f754bf6b35ae06b562590d65b12a7bbc13e01e707bc6abf7fba", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-f804fee2e344a11c", "migration": false}, {"id": "9.6.0-58ba79fc7f12f8e3", "cves": [], "html": "<p>\u6dfb\u52a0\u7528\u4e8e\u5199 <acronym>WAL</acronym> \u8bb0\u5f55\u7684\u901a\u7528\u63a5\u53e3\uff08Alexander Korotkov\u3001Petr Jel\u00ednek\u3001Markus Nullmeier\uff09</p>\n<p>\u6b64\u66f4\u6539\u5141\u8bb8\u6269\u5c55\u4f7f\u7528\u6807\u51c6\u5e03\u5c40\u4e3a\u9875\u66f4\u6539\u5199 <acronym>WAL</acronym> \u8bb0\u5f55\u3002\u9700\u8981\u5728\u65e0\u6cd5\u8bbf\u95ee\u6269\u5c55\u7684\u60c5\u51b5\u4e0b\u91cd\u653e <acronym>WAL</acronym> \u7684\u95ee\u9898\u901a\u8fc7\u901a\u7528\u91cd\u653e\u4ee3\u7801\u89e3\u51b3\u3002\u8fd9\u5141\u8bb8\u6269\u5c55\u5b9e\u73b0\u4f8b\u5982\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5\u5e76\u8ba9\u5b83\u4eec\u6709 <acronym>WAL</acronym> \u652f\u6301\u3002</p>", "text": "\u6dfb\u52a0\u7528\u4e8e\u5199 WAL \u8bb0\u5f55\u7684\u901a\u7528\u63a5\u53e3\uff08Alexander Korotkov\u3001Petr Jel\u00ednek\u3001Markus Nullmeier\uff09 \u6b64\u66f4\u6539\u5141\u8bb8\u6269\u5c55\u4f7f\u7528\u6807\u51c6\u5e03\u5c40\u4e3a\u9875\u66f4\u6539\u5199 WAL \u8bb0\u5f55\u3002\u9700\u8981\u5728\u65e0\u6cd5\u8bbf\u95ee\u6269\u5c55\u7684\u60c5\u51b5\u4e0b\u91cd\u653e WAL \u7684\u95ee\u9898\u901a\u8fc7\u901a\u7528\u91cd\u653e\u4ee3\u7801\u89e3\u51b3\u3002\u8fd9\u5141\u8bb8\u6269\u5c55\u5b9e\u73b0\u4f8b\u5982\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5\u5e76\u8ba9\u5b83\u4eec\u6709 WAL \u652f\u6301\u3002", "title": "\u6dfb\u52a0\u7528\u4e8e\u5199 WAL \u8bb0\u5f55\u7684\u901a\u7528\u63a5\u53e3", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "b3cb7380fd91bd2f96ff87aed6f84b397ee222673c9146855a7565c1565a2e44", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["65578341a"]], "identity_text": "Add a generic interface for writing WAL records (Alexander Korotkov, Petr Jel\u00ednek, Markus Nullmeier) This change allows extensions to write WAL records for changes to pages using a standard layout. The problem of needing to replay WAL without access to the extension is solved by having generic replay code. This allows extensions to implement, for example, index access methods and have WAL support for them.", "commit_aliases": ["65578341a"], "source_commits": ["65578341a"], "source_entry_id": "9.6.0/changes/176", "db_id": "dab5b6e3fff0d3a79149e154cf8ec514", "patch_ids": ["e5625ff5e6ed86a7a317ded4a8fe9f2a"], "statement_hash": "4c5ef1776b3df75985740b8e6d5d48bc796037a5643644db6a26a6afabdc2e81", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-58ba79fc7f12f8e3", "migration": false}, {"id": "9.6.0-20af980f33dbae83", "cves": [], "html": "<p>\u652f\u6301\u903b\u8f91\u89e3\u7801\u7684\u901a\u7528 <acronym>WAL</acronym> \u6d88\u606f\uff08Petr Jel\u00ednek\u3001Andres Freund\uff09</p>\n<p>\u6b64\u7279\u6027\u5141\u8bb8\u6269\u5c55\u628a\u6570\u636e\u63d2\u5165 <acronym>WAL</acronym> \u6d41\u4e2d\uff0c\u903b\u8f91\u89e3\u7801\u63d2\u4ef6\u53ef\u4ee5\u8bfb\u53d6\u5b83\uff0c\u4f46\u5b83\u4e0e\u7269\u7406\u6570\u636e\u6062\u590d\u65e0\u5173\u3002</p>", "text": "\u652f\u6301\u903b\u8f91\u89e3\u7801\u7684\u901a\u7528 WAL \u6d88\u606f\uff08Petr Jel\u00ednek\u3001Andres Freund\uff09 \u6b64\u7279\u6027\u5141\u8bb8\u6269\u5c55\u628a\u6570\u636e\u63d2\u5165 WAL \u6d41\u4e2d\uff0c\u903b\u8f91\u89e3\u7801\u63d2\u4ef6\u53ef\u4ee5\u8bfb\u53d6\u5b83\uff0c\u4f46\u5b83\u4e0e\u7269\u7406\u6570\u636e\u6062\u590d\u65e0\u5173\u3002", "title": "\u652f\u6301\u903b\u8f91\u89e3\u7801\u7684\u901a\u7528 WAL \u6d88\u606f", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "613df77511763ed02b924b72f197da6ac8a79ac3366bc0a5e7824c6c6388e6d4", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["3fe3511d0"]], "identity_text": "Support generic WAL messages for logical decoding (Petr Jel\u00ednek, Andres Freund) This feature allows extensions to insert data into the WAL stream that can be read by logical-decoding plugins, but is not connected to physical data restoration.", "commit_aliases": ["3fe3511d0"], "source_commits": ["3fe3511d0"], "source_entry_id": "9.6.0/changes/177", "db_id": "0a51f53ebd873cfc1867bece28726a5a", "patch_ids": ["308573ba5c992bd8bde05d7e69eacc6a"], "statement_hash": "0d33dd7d01eabdadcc2b6d386f4d2bc10cb3c39549fce0b86d8fc965fb2f6b9a", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-20af980f33dbae83", "migration": false}, {"id": "9.6.0-4be4f72e28bb75f5", "cves": [], "html": "<p>\u5141\u8bb8 SP-GiST \u64cd\u4f5c\u7b26\u7c7b\u5728\u6cbf\u7d22\u5f15\u4e0b\u964d\u65f6\u5b58\u50a8\u4efb\u610f<span>\u201c<span>\u904d\u5386\u503c</span>\u201d</span>\uff08Alexander Lebedev\u3001Teodor Sigaev\uff09</p>\n<p>\u8fd9\u6709\u70b9\u50cf<span>\u201c<span>\u91cd\u5efa\u503c</span>\u201d</span>\uff0c\u4f46\u5b83\u53ef\u4ee5\u662f\u4efb\u610f\u6570\u636e\u5757\uff0c\u4e0d\u4e00\u5b9a\u662f\u4e0e\u88ab\u7d22\u5f15\u5217\u76f8\u540c\u7684\u6570\u636e\u7c7b\u578b\u3002</p>", "text": "\u5141\u8bb8 SP-GiST \u64cd\u4f5c\u7b26\u7c7b\u5728\u6cbf\u7d22\u5f15\u4e0b\u964d\u65f6\u5b58\u50a8\u4efb\u610f\u201c\u904d\u5386\u503c\u201d\uff08Alexander Lebedev\u3001Teodor Sigaev\uff09 \u8fd9\u6709\u70b9\u50cf\u201c\u91cd\u5efa\u503c\u201d\uff0c\u4f46\u5b83\u53ef\u4ee5\u662f\u4efb\u610f\u6570\u636e\u5757\uff0c\u4e0d\u4e00\u5b9a\u662f\u4e0e\u88ab\u7d22\u5f15\u5217\u76f8\u540c\u7684\u6570\u636e\u7c7b\u578b\u3002", "title": "\u5141\u8bb8 SP-GiST \u64cd\u4f5c\u7b26\u7c7b\u5728\u6cbf\u7d22\u5f15\u4e0b\u964d\u65f6\u5b58\u50a8\u4efb\u610f\u201c\u904d\u5386\u503c\u201d", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "432138e369c8795bca081b2c94cca2e27c8882400735ffc529954cccc4e264e0", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["87545f541"], ["ccd6eb49a"]], "identity_text": "Allow SP-GiST operator classes to store an arbitrary traversal value while descending the index (Alexander Lebedev, Teodor Sigaev) This is somewhat like the reconstructed value, but it could be any arbitrary chunk of data, not necessarily of the same data type as the indexed column.", "commit_aliases": ["87545f541", "ccd6eb49a"], "source_commits": ["87545f541", "ccd6eb49a"], "source_entry_id": "9.6.0/changes/178", "db_id": "d52500e463a2c62cc67218059e5ce4f2", "patch_ids": ["3346e5293336e2b3de477359c99bc6d1", "a7c4bb53065006e2a3b098c6586d214e"], "statement_hash": "dd07a05295f358f0556c38fc04628c2b8bed638e3170001ae531a7292c740c6b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-4be4f72e28bb75f5", "migration": false}, {"id": "9.6.0-717998a841e8982b", "cves": [], "html": "<p>\u4e3a <code>ereport()</code> \u5f15\u5165 <code>LOG_SERVER_ONLY</code> \u6d88\u606f\u7ea7\u522b\uff08David Steele\uff09</p>\n<p>\u6b64\u7ea7\u522b\u7684\u884c\u4e3a\u50cf <code>LOG</code>\uff0c\u53ea\u662f\u6d88\u606f\u6c38\u8fdc\u4e0d\u4f1a\u53d1\u9001\u5230\u5ba2\u6237\u7aef\u3002\u5b83\u7528\u4e8e\u5ba1\u8ba1\u548c\u7c7b\u4f3c\u5e94\u7528\u3002</p>", "text": "\u4e3a ereport() \u5f15\u5165 LOG_SERVER_ONLY \u6d88\u606f\u7ea7\u522b\uff08David Steele\uff09 \u6b64\u7ea7\u522b\u7684\u884c\u4e3a\u50cf LOG\uff0c\u53ea\u662f\u6d88\u606f\u6c38\u8fdc\u4e0d\u4f1a\u53d1\u9001\u5230\u5ba2\u6237\u7aef\u3002\u5b83\u7528\u4e8e\u5ba1\u8ba1\u548c\u7c7b\u4f3c\u5e94\u7528\u3002", "title": "\u4e3a ereport() \u5f15\u5165 LOG_SERVER_ONLY \u6d88\u606f\u7ea7\u522b", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "b7948bd29f344d3015a5fbb8cd74842d1ffc5fe55cdc985875b41a01fb1f0a2d", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["66229ac00"]], "identity_text": "Introduce a LOG_SERVER_ONLY message level for ereport() (David Steele) This level acts like LOG except that the message is never sent to the client. It is meant for use in auditing and similar applications.", "commit_aliases": ["66229ac00"], "source_commits": ["66229ac00"], "source_entry_id": "9.6.0/changes/179", "db_id": "4b2546b4625f4775e5dbf1ff85d2dffb", "patch_ids": ["dd1036b560a6b6fbc68b00ca96e239af"], "statement_hash": "c663800da3bfcb32803a0c34771389a69d80cda5484085c0890f6b077f22580d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-717998a841e8982b", "migration": false}, {"id": "9.6.0-61187e239a510eeb", "cves": [], "html": "<p>\u63d0\u4f9b\u6784\u5efa\u6240\u6709\u751f\u6210\u5934\u6587\u4ef6\u7684 <code>Makefile</code> \u76ee\u6807\uff08Michael Paquier\u3001Tom Lane\uff09</p>\n<p>\u73b0\u5728\u53ef\u4ee5\u8c03\u7528 <code>submake-generated-headers</code> \u6765\u786e\u4fdd\u751f\u6210\u7684\u540e\u7aef\u5934\u6587\u4ef6\u662f\u6700\u65b0\u7684\u3002\u8fd9\u5728\u53ef\u80fd<span>\u201c<span>\u72ec\u7acb</span>\u201d</span>\u6784\u5efa\u7684\u5b50\u76ee\u5f55\u4e2d\u6709\u7528\u3002</p>", "text": "\u63d0\u4f9b\u6784\u5efa\u6240\u6709\u751f\u6210\u5934\u6587\u4ef6\u7684 Makefile \u76ee\u6807\uff08Michael Paquier\u3001Tom Lane\uff09 \u73b0\u5728\u53ef\u4ee5\u8c03\u7528 submake-generated-headers \u6765\u786e\u4fdd\u751f\u6210\u7684\u540e\u7aef\u5934\u6587\u4ef6\u662f\u6700\u65b0\u7684\u3002\u8fd9\u5728\u53ef\u80fd\u201c\u72ec\u7acb\u201d\u6784\u5efa\u7684\u5b50\u76ee\u5f55\u4e2d\u6709\u7528\u3002", "title": "\u63d0\u4f9b\u6784\u5efa\u6240\u6709\u751f\u6210\u5934\u6587\u4ef6\u7684 Makefile \u76ee\u6807", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "624cbaafb8a2c925b7e032e756c52b99ac862b4b8a4787bf07620311fbe5e665", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["548af97fc"]], "identity_text": "Provide a Makefile target to build all generated headers (Michael Paquier, Tom Lane) submake-generated-headers can now be invoked to ensure that generated backend header files are up-to-date. This is useful in subdirectories that might be built standalone.", "commit_aliases": ["548af97fc"], "source_commits": ["548af97fc"], "source_entry_id": "9.6.0/changes/180", "db_id": "5b4ade27f0ef0a08c277ab723f310771", "patch_ids": ["cea045616009fd960036b2a8701d9616"], "statement_hash": "6631fe620be07727bc3472242af365f8c9fd202288e337f0a14752d88f7b6c05", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-61187e239a510eeb", "migration": false}, {"id": "9.6.0-1cc57f2c59f1c876", "cves": [], "html": "<p>\u652f\u6301 OpenSSL 1.1.0\uff08Andreas Karlsson\u3001Heikki Linnakangas\uff09</p>", "text": "\u652f\u6301 OpenSSL 1.1.0\uff08Andreas Karlsson\u3001Heikki Linnakangas\uff09", "title": "\u652f\u6301 OpenSSL 1.1.0", "commits": [], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.14", "source_hash": "aae14e8214682c258b795d091b979c239c3d2607e09df0d0da53bdaaf846c50b", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["48e5ba61e", "5c6df67e0", "9895818d5"], ["593d4e47d", "e2838c580", "fcd93e4af"]], "identity_text": "Support OpenSSL 1.1.0 (Andreas Karlsson, Heikki Linnakangas)", "commit_aliases": ["48e5ba61e", "593d4e47d", "5c6df67e0", "9895818d5", "e2838c580", "fcd93e4af"], "source_commits": ["9895818d5", "fcd93e4af"], "source_entry_id": "9.6.0/changes/181", "db_id": "1a80e2e675e7c7b2d0a3739f9f395847", "patch_ids": ["813c160b660e56598913c89f61f6441c", "948071a17cc9115c9e78919eb24aaf97"], "statement_hash": "2f6c3be6933f9f3776c1b170f7f68d87e0e8b65fd75697dd5933193df53961a7", "relations": [{"rule": 2, "type": "related", "target": "ca6c798db2f25b8f7b187a9a21f3ff72", "evidence": {"same_day": false, "patch_ids": ["813c160b660e56598913c89f61f6441c", "948071a17cc9115c9e78919eb24aaf97"]}}], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-1cc57f2c59f1c876", "migration": false}, {"id": "9.6.0-8c9ea528b2afed03", "cves": [], "html": "<p>\u6dfb\u52a0\u914d\u7f6e\u53c2\u6570 <code>auto_explain.sample_rate</code>\uff0c\u5141\u8bb8 <a href=\"/docs/9.6/auto-explain.html\" title=\"F.3.\u00a0auto_explain\"><code>contrib/auto_explain</code></a> \u53ea\u6355\u83b7\u6240\u6709\u67e5\u8be2\u7684\u53ef\u914d\u7f6e\u6bd4\u4f8b\uff08Craig Ringer\u3001Julien Rouhaud\uff09</p>\n<p>\u8fd9\u5141\u8bb8\u51cf\u5c11\u91cd\u67e5\u8be2\u6d41\u91cf\u7684\u5f00\u9500\uff0c\u540c\u65f6\u4ecd\u5e73\u5747\u83b7\u5f97\u6709\u7528\u4fe1\u606f\u3002</p>", "text": "\u6dfb\u52a0\u914d\u7f6e\u53c2\u6570 auto_explain.sample_rate\uff0c\u5141\u8bb8 contrib/auto_explain \u53ea\u6355\u83b7\u6240\u6709\u67e5\u8be2\u7684\u53ef\u914d\u7f6e\u6bd4\u4f8b\uff08Craig Ringer\u3001Julien Rouhaud\uff09 \u8fd9\u5141\u8bb8\u51cf\u5c11\u91cd\u67e5\u8be2\u6d41\u91cf\u7684\u5f00\u9500\uff0c\u540c\u65f6\u4ecd\u5e73\u5747\u83b7\u5f97\u6709\u7528\u4fe1\u606f\u3002", "title": "\u6dfb\u52a0\u914d\u7f6e\u53c2\u6570 auto_explain.sample_rate\uff0c\u5141\u8bb8 contrib/auto_explain \u53ea\u6355\u83b7\u6240\u6709\u67e5\u8be2\u7684\u53ef\u914d\u7f6e\u6bd4\u4f8b", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "407844b578b4591e346942b5816a1a2e6797d95b120fa3add2b1677b5f93353f", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["7a8d87483"], ["92f03fe76"]], "identity_text": "Add configuration parameter auto_explain.sample_rate to allow contrib/auto_explain to capture just a configurable fraction of all queries (Craig Ringer, Julien Rouhaud) This allows reduction of overhead for heavy query traffic, while still getting useful information on average.", "commit_aliases": ["7a8d87483", "92f03fe76"], "source_commits": ["7a8d87483", "92f03fe76"], "source_entry_id": "9.6.0/changes/182", "db_id": "658c4dbc38b4ccb163dc1948337896e6", "patch_ids": ["0ab1a3fb26ed2246ad8d2f746ae69b0a", "144d048ac844d38ab75f7d2067fafe06"], "statement_hash": "21ff6ff49eca967bd8b2542c03c64b62b78bc25f36bc0656fc1f79a036356368", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-8c9ea528b2afed03", "migration": false}, {"id": "9.6.0-a811e1d4e87d3e24", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/bloom.html\" title=\"F.4.\u00a0bloom\"><code>contrib/bloom</code></a> \u6a21\u5757\uff0c\u5b9e\u73b0\u57fa\u4e8e Bloom \u8fc7\u6ee4\u7684\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5\uff08Teodor Sigaev\u3001Alexander Korotkov\uff09</p>\n<p>\u8fd9\u4e3b\u8981\u662f\u975e\u6838\u5fc3\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5\u7684\u6982\u5ff5\u9a8c\u8bc1\uff0c\u4f46\u5bf9\u641c\u7d22\u8bb8\u591a\u5217\u7684\u67e5\u8be2\u672c\u8eab\u4e5f\u53ef\u80fd\u6709\u7528\u3002</p>", "text": "\u6dfb\u52a0 contrib/bloom \u6a21\u5757\uff0c\u5b9e\u73b0\u57fa\u4e8e Bloom \u8fc7\u6ee4\u7684\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5\uff08Teodor Sigaev\u3001Alexander Korotkov\uff09 \u8fd9\u4e3b\u8981\u662f\u975e\u6838\u5fc3\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5\u7684\u6982\u5ff5\u9a8c\u8bc1\uff0c\u4f46\u5bf9\u641c\u7d22\u8bb8\u591a\u5217\u7684\u67e5\u8be2\u672c\u8eab\u4e5f\u53ef\u80fd\u6709\u7528\u3002", "title": "\u6dfb\u52a0 contrib/bloom \u6a21\u5757\uff0c\u5b9e\u73b0\u57fa\u4e8e Bloom \u8fc7\u6ee4\u7684\u7d22\u5f15\u8bbf\u95ee\u65b9\u6cd5", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "5f4c3aae6f4e36cb28fa148a9faadf1eeb79e44dfb32343c068239fee23ca4e4", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["9ee014fc8"]], "identity_text": "Add contrib/bloom module that implements an index access method based on Bloom filtering (Teodor Sigaev, Alexander Korotkov) This is primarily a proof-of-concept for non-core index access methods, but it could be useful in its own right for queries that search many columns.", "commit_aliases": ["9ee014fc8"], "source_commits": ["9ee014fc8"], "source_entry_id": "9.6.0/changes/183", "db_id": "65d3e99617aabd4167fc8f44c2613740", "patch_ids": ["63fc5d022dbd6c52a9e14ec180de1a76"], "statement_hash": "955a00b729a495dfc0ea02f925a00e1c9b2c06d1aadbc9eae2f2b3882df84faf", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-a811e1d4e87d3e24", "migration": false}, {"id": "9.6.0-204cfec2d2651e58", "cves": [], "html": "<p>\u5728 <a href=\"/docs/9.6/cube.html\" title=\"F.9.\u00a0cube \u2014 \u591a\u7ef4\u7acb\u65b9\u4f53\u6570\u636e\u7c7b\u578b\"><code>contrib/cube</code></a> \u4e2d\uff0c\u4e3a cube \u5f15\u5165\u8ddd\u79bb\u64cd\u4f5c\u7b26\uff0c\u5e76\u652f\u6301 cube \u5217\u4e0a GiST \u7d22\u5f15\u4e2d\u7684 kNN \u5f0f\u641c\u7d22\uff08Stas Kelvich\uff09</p>", "text": "\u5728 contrib/cube \u4e2d\uff0c\u4e3a cube \u5f15\u5165\u8ddd\u79bb\u64cd\u4f5c\u7b26\uff0c\u5e76\u652f\u6301 cube \u5217\u4e0a GiST \u7d22\u5f15\u4e2d\u7684 kNN \u5f0f\u641c\u7d22\uff08Stas Kelvich\uff09", "title": "\u5728 contrib/cube \u4e2d\uff0c\u4e3a cube \u5f15\u5165\u8ddd\u79bb\u64cd\u4f5c\u7b26\uff0c\u5e76\u652f\u6301 cube \u5217\u4e0a GiST \u7d22\u5f15\u4e2d\u7684 kNN \u5f0f\u641c\u7d22", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "90c2db43c4ae778c745f9f83fd95334601665a52a16b1f55e56a2104403f670c", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["33bd250f6"], ["81ee726d8"]], "identity_text": "In contrib/cube, introduce distance operators for cubes, and support kNN-style searches in GiST indexes on cube columns (Stas Kelvich)", "commit_aliases": ["33bd250f6", "81ee726d8"], "source_commits": ["33bd250f6", "81ee726d8"], "source_entry_id": "9.6.0/changes/184", "db_id": "66ae3002f2fcfcf78afe0e47d2ff83ae", "patch_ids": ["abda0d72dd32515553dfdeea0460e850", "be291ea04e1df8209337d1e93d59379e"], "statement_hash": "8095eb7581a4e970636676b9d22892e582df5070cff9980d549fb9e7e5e65963", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-204cfec2d2651e58", "migration": false}, {"id": "9.6.0-8b1df5080ef0bb40", "cves": [], "html": "<p>\u4f7f <code>contrib/hstore</code> \u7684 <a href=\"/docs/9.6/hstore.html#HSTORE-FUNC-TABLE\" title=\"\u8868\u00a0F.9.\u00a0hstore \u51fd\u6570\"><code>hstore_to_jsonb_loose()</code></a> \u548c <code>hstore_to_json_loose()</code> \u51fd\u6570\u5bf9\u4ec0\u4e48\u7b97\u6570\u5b57\u8fbe\u6210\u4e00\u81f4\uff08Tom Lane\uff09</p>\n<p>\u4ee5\u524d <code>hstore_to_jsonb_loose()</code> \u4f1a\u628a\u6570\u5b57\u6837\u5b50\u7684\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a <acronym>JSON</acronym> \u6570\u5b57\u800c\u4e0d\u662f\u5b57\u7b26\u4e32\uff0c\u5373\u4f7f\u5b83\u4eec\u4e0d\u5b8c\u5168\u5339\u914d <acronym>JSON</acronym> \u7684\u6570\u5b57\u8bed\u6cd5\u89c4\u8303\u3002\u8fd9\u4e0e <code>hstore_to_json_loose()</code> \u4e0d\u4e00\u81f4\uff0c\u56e0\u6b64\u6536\u7d27\u6d4b\u8bd5\u4ee5\u5339\u914d <acronym>JSON</acronym> \u8bed\u6cd5\u3002</p>", "text": "\u4f7f contrib/hstore \u7684 hstore_to_jsonb_loose() \u548c hstore_to_json_loose() \u51fd\u6570\u5bf9\u4ec0\u4e48\u7b97\u6570\u5b57\u8fbe\u6210\u4e00\u81f4\uff08Tom Lane\uff09 \u4ee5\u524d hstore_to_jsonb_loose() \u4f1a\u628a\u6570\u5b57\u6837\u5b50\u7684\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a JSON \u6570\u5b57\u800c\u4e0d\u662f\u5b57\u7b26\u4e32\uff0c\u5373\u4f7f\u5b83\u4eec\u4e0d\u5b8c\u5168\u5339\u914d JSON \u7684\u6570\u5b57\u8bed\u6cd5\u89c4\u8303\u3002\u8fd9\u4e0e hstore_to_json_loose() \u4e0d\u4e00\u81f4\uff0c\u56e0\u6b64\u6536\u7d27\u6d4b\u8bd5\u4ee5\u5339\u914d JSON \u8bed\u6cd5\u3002", "title": "\u4f7f contrib/hstore \u7684 hstore_to_jsonb_loose() \u548c hstore_to_json_loose() \u51fd\u6570\u5bf9\u4ec0\u4e48\u7b97\u6570\u5b57\u8fbe\u6210\u4e00\u81f4", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "811fbb98557f511292bfa8f3ec0a11f745452678c2606b54c060f9c69c18bdec", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["41d2c081c"]], "identity_text": "Make contrib/hstore's hstore_to_jsonb_loose() and hstore_to_json_loose() functions agree on what is a number (Tom Lane) Previously, hstore_to_jsonb_loose() would convert numeric-looking strings to JSON numbers, rather than strings, even if they did not exactly match the JSON syntax specification for numbers. This was inconsistent with hstore_to_json_loose(), so tighten the test to match the JSON syntax.", "commit_aliases": ["41d2c081c"], "source_commits": ["41d2c081c"], "source_entry_id": "9.6.0/changes/185", "db_id": "57c3a955a88e6877a353e1792c0577eb", "patch_ids": ["3abd1162b7839e777d20cb5a75b9d512"], "statement_hash": "a37df2459c960d844c32224a744a1e4ab246ee6ad55e135b80847235435b7442", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-8b1df5080ef0bb40", "migration": false}, {"id": "9.6.0-2b0115fdd1ff0cbc", "cves": [], "html": "<p>\u4e3a <a href=\"/docs/9.6/intarray.html\" title=\"F.18.\u00a0intarray\"><code>contrib/intarray</code></a> \u64cd\u4f5c\u7b26\u6dfb\u52a0\u9009\u62e9\u7387\u4f30\u8ba1\u51fd\u6570\uff0c\u4ee5\u6539\u8fdb\u4f7f\u7528\u8fd9\u4e9b\u64cd\u4f5c\u7b26\u7684\u67e5\u8be2\u7684\u8ba1\u5212\uff08Yury Zhuravlev\u3001Alexander Korotkov\uff09</p>", "text": "\u4e3a contrib/intarray \u64cd\u4f5c\u7b26\u6dfb\u52a0\u9009\u62e9\u7387\u4f30\u8ba1\u51fd\u6570\uff0c\u4ee5\u6539\u8fdb\u4f7f\u7528\u8fd9\u4e9b\u64cd\u4f5c\u7b26\u7684\u67e5\u8be2\u7684\u8ba1\u5212\uff08Yury Zhuravlev\u3001Alexander Korotkov\uff09", "title": "\u4e3a contrib/intarray \u64cd\u4f5c\u7b26\u6dfb\u52a0\u9009\u62e9\u7387\u4f30\u8ba1\u51fd\u6570\uff0c\u4ee5\u6539\u8fdb\u4f7f\u7528\u8fd9\u4e9b\u64cd\u4f5c\u7b26\u7684\u67e5\u8be2\u7684\u8ba1\u5212", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "62d2098a1d2f86661f5fe67558291a688fc1ef14496322652fbfe425dda46a47", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["c6fbe6d6f"]], "identity_text": "Add selectivity estimation functions for contrib/intarray operators to improve plans for queries using those operators (Yury Zhuravlev, Alexander Korotkov)", "commit_aliases": ["c6fbe6d6f"], "source_commits": ["c6fbe6d6f"], "source_entry_id": "9.6.0/changes/186", "db_id": "044ac34156a69bdfd93e35cb76242eaf", "patch_ids": ["0a6fc130b97da48a5e866442c2e04e76"], "statement_hash": "83d7c8366173fa5443a54952a842ca077a8b9eea69169d53ee664a9427fffa51", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-2b0115fdd1ff0cbc", "migration": false}, {"id": "9.6.0-ed244332e9031552", "cves": [], "html": "<p>\u4f7f <a href=\"/docs/9.6/pageinspect.html\" title=\"F.22.\u00a0pageinspect\"><code>contrib/pageinspect</code></a> \u7684 <code>heap_page_items()</code> \u51fd\u6570\u663e\u793a\u6bcf\u4e2a\u5143\u7ec4\u4e2d\u7684\u539f\u59cb\u6570\u636e\uff0c\u5e76\u6dfb\u52a0\u65b0\u51fd\u6570 <code>tuple_data_split()</code> \u548c <code>heap_page_item_attrs()</code> \u7528\u4e8e\u68c0\u67e5\u5355\u4e2a\u5143\u7ec4\u5b57\u6bb5\uff08Nikolay Shaplov\uff09</p>", "text": "\u4f7f contrib/pageinspect \u7684 heap_page_items() \u51fd\u6570\u663e\u793a\u6bcf\u4e2a\u5143\u7ec4\u4e2d\u7684\u539f\u59cb\u6570\u636e\uff0c\u5e76\u6dfb\u52a0\u65b0\u51fd\u6570 tuple_data_split() \u548c heap_page_item_attrs() \u7528\u4e8e\u68c0\u67e5\u5355\u4e2a\u5143\u7ec4\u5b57\u6bb5\uff08Nikolay Shaplov\uff09", "title": "\u4f7f contrib/pageinspect \u7684 heap_page_items() \u51fd\u6570\u663e\u793a\u6bcf\u4e2a\u5143\u7ec4\u4e2d\u7684\u539f\u59cb\u6570\u636e\uff0c\u5e76\u6dfb\u52a0\u65b0\u51fd\u6570 tuple_data_split() \u548c heap_page_item_attrs() \u7528\u4e8e\u68c0\u67e5\u5355\u4e2a\u5143\u7ec4\u5b57\u6bb5", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "ebfcd2d7a8a1e0067250064b22b03fc7d913831b9aa94d8574c240f7f98e15a9", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["d6061f83a"]], "identity_text": "Make contrib/pageinspect's heap_page_items() function show the raw data in each tuple, and add new functions tuple_data_split() and heap_page_item_attrs() for inspection of individual tuple fields (Nikolay Shaplov)", "commit_aliases": ["d6061f83a"], "source_commits": ["d6061f83a"], "source_entry_id": "9.6.0/changes/187", "db_id": "a6d1f16df69322e0864665568d1fb874", "patch_ids": ["78cccc68e779f9c26e41978ca66243f5"], "statement_hash": "f65f031bab977d1598da60b3b95cfb70d7e9bba618d02b6defc25112178aaf77", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-ed244332e9031552", "migration": false}, {"id": "9.6.0-e924e5ffce133d91", "cves": [], "html": "<p>\u4e3a <a href=\"/docs/9.6/pgcrypto.html\" title=\"F.25.\u00a0pgcrypto\"><code>contrib/pgcrypto</code></a> \u7684 <code>pgp_sym_encrypt()</code> \u51fd\u6570\u6dfb\u52a0\u53ef\u9009\u7684 <code>S2K</code> \u8fed\u4ee3\u8ba1\u6570\u53c2\u6570\uff08Jeff Janes\uff09</p>", "text": "\u4e3a contrib/pgcrypto \u7684 pgp_sym_encrypt() \u51fd\u6570\u6dfb\u52a0\u53ef\u9009\u7684 S2K \u8fed\u4ee3\u8ba1\u6570\u53c2\u6570\uff08Jeff Janes\uff09", "title": "\u4e3a contrib/pgcrypto \u7684 pgp_sym_encrypt() \u51fd\u6570\u6dfb\u52a0\u53ef\u9009\u7684 S2K \u8fed\u4ee3\u8ba1\u6570\u53c2\u6570", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "0177a2adeb95f27f2721acffc2cb77720e23d4ec83a5c23143933ea3cfe7c52d", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["188f359d3"]], "identity_text": "Add an optional S2K iteration count parameter to contrib/pgcrypto's pgp_sym_encrypt() function (Jeff Janes)", "commit_aliases": ["188f359d3"], "source_commits": ["188f359d3"], "source_entry_id": "9.6.0/changes/188", "db_id": "4a4d5bf2c07734a0d48d2cc70b375983", "patch_ids": ["c8515b907b155f5ec30921ad87d74e68"], "statement_hash": "f96db440de34704fa1a5331bbed92840083dd3d099758bc66372a693d5bb5f0d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-e924e5ffce133d91", "migration": false}, {"id": "9.6.0-7160e4dffb543bd5", "cves": [], "html": "<p>\u4e3a <a href=\"/docs/9.6/pgtrgm.html\" title=\"F.31.\u00a0pg_trgm\"><code>contrib/pg_trgm</code></a> \u6dfb\u52a0\u5bf9<span>\u201c<span>\u5355\u8bcd\u76f8\u4f3c\u5ea6</span>\u201d</span>\u7684\u652f\u6301\uff08Alexander Korotkov\u3001Artur Zakirov\uff09</p>\n<p>\u8fd9\u4e9b\u51fd\u6570\u548c\u64cd\u4f5c\u7b26\u5ea6\u91cf\u4e00\u4e2a\u5b57\u7b26\u4e32\u4e0e\u53e6\u4e00\u4e2a\u5b57\u7b26\u4e32\u4e2d\u6700\u76f8\u4f3c\u7684\u5355\u4e2a\u5355\u8bcd\u4e4b\u95f4\u7684\u76f8\u4f3c\u5ea6\u3002</p>", "text": "\u4e3a contrib/pg_trgm \u6dfb\u52a0\u5bf9\u201c\u5355\u8bcd\u76f8\u4f3c\u5ea6\u201d\u7684\u652f\u6301\uff08Alexander Korotkov\u3001Artur Zakirov\uff09 \u8fd9\u4e9b\u51fd\u6570\u548c\u64cd\u4f5c\u7b26\u5ea6\u91cf\u4e00\u4e2a\u5b57\u7b26\u4e32\u4e0e\u53e6\u4e00\u4e2a\u5b57\u7b26\u4e32\u4e2d\u6700\u76f8\u4f3c\u7684\u5355\u4e2a\u5355\u8bcd\u4e4b\u95f4\u7684\u76f8\u4f3c\u5ea6\u3002", "title": "\u4e3a contrib/pg_trgm \u6dfb\u52a0\u5bf9\u201c\u5355\u8bcd\u76f8\u4f3c\u5ea6\u201d\u7684\u652f\u6301", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "000b39304c9cbffcacbe29c24c2c6ae7e11d5a8316eceea240628562a94bc8b2", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["f576b17cd"]], "identity_text": "Add support for word similarity to contrib/pg_trgm (Alexander Korotkov, Artur Zakirov) These functions and operators measure the similarity between one string and the most similar single word of another string.", "commit_aliases": ["f576b17cd"], "source_commits": ["f576b17cd"], "source_entry_id": "9.6.0/changes/189", "db_id": "54aa6514cbcbcbe19e92837484e396d1", "patch_ids": ["0cfbebe3029becafa3dbbe3b51222afb"], "statement_hash": "9ce20de072488369887b3dde0362a5b8412b3f514dc196593fb3d217a01e372d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-7160e4dffb543bd5", "migration": false}, {"id": "9.6.0-56f49b095fa93f21", "cves": [], "html": "<p>\u4e3a <code>contrib/pg_trgm</code> \u7684\u76f8\u4f3c\u5ea6\u9608\u503c\u6dfb\u52a0\u914d\u7f6e\u53c2\u6570 <code>pg_trgm.similarity_threshold</code>\uff08Artur Zakirov\uff09</p>\n<p>\u6b64\u9608\u503c\u4e00\u76f4\u53ef\u914d\u7f6e\uff0c\u4f46\u4ee5\u524d\u7531\u7279\u6b8a\u7528\u9014\u51fd\u6570 <code>set_limit()</code> \u548c <code>show_limit()</code> \u63a7\u5236\u3002\u5b83\u4eec\u73b0\u5728\u88ab\u5f03\u7528\u3002</p>", "text": "\u4e3a contrib/pg_trgm \u7684\u76f8\u4f3c\u5ea6\u9608\u503c\u6dfb\u52a0\u914d\u7f6e\u53c2\u6570 pg_trgm.similarity_threshold\uff08Artur Zakirov\uff09 \u6b64\u9608\u503c\u4e00\u76f4\u53ef\u914d\u7f6e\uff0c\u4f46\u4ee5\u524d\u7531\u7279\u6b8a\u7528\u9014\u51fd\u6570 set_limit() \u548c show_limit() \u63a7\u5236\u3002\u5b83\u4eec\u73b0\u5728\u88ab\u5f03\u7528\u3002", "title": "\u4e3a contrib/pg_trgm \u7684\u76f8\u4f3c\u5ea6\u9608\u503c\u6dfb\u52a0\u914d\u7f6e\u53c2\u6570 pg_trgm.similarity_threshold", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "6781fb02ef7b4ad10385aab37fb450793b1ff2fe20238d939304a30ae777a770", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["5871b8848"], ["9c852566a"]], "identity_text": "Add configuration parameter pg_trgm.similarity_threshold for contrib/pg_trgm's similarity threshold (Artur Zakirov) This threshold has always been configurable, but formerly it was controlled by special-purpose functions set_limit() and show_limit(). Those are now deprecated.", "commit_aliases": ["5871b8848", "9c852566a"], "source_commits": ["5871b8848", "9c852566a"], "source_entry_id": "9.6.0/changes/190", "db_id": "df31380e0834580ee6e9887bf5ed6441", "patch_ids": ["14364d9be2444094922a5a95c4e38f37", "26443f9474de4ba89162182d3d56d6ba"], "statement_hash": "09248a2e70492ae6a9158656837dced0620ad2aaa9da34d36dad493f2af13269", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-56f49b095fa93f21", "migration": false}, {"id": "9.6.0-f103ec25e5ee282d", "cves": [], "html": "<p>\u6539\u8fdb <code>contrib/pg_trgm</code> \u7684 GIN \u64cd\u4f5c\u7b26\u7c7b\uff0c\u52a0\u901f\u540c\u65f6\u51fa\u73b0\u5e38\u89c1\u548c\u7f55\u89c1\u952e\u7684\u7d22\u5f15\u641c\u7d22\uff08Jeff Janes\uff09</p>", "text": "\u6539\u8fdb contrib/pg_trgm \u7684 GIN \u64cd\u4f5c\u7b26\u7c7b\uff0c\u52a0\u901f\u540c\u65f6\u51fa\u73b0\u5e38\u89c1\u548c\u7f55\u89c1\u952e\u7684\u7d22\u5f15\u641c\u7d22\uff08Jeff Janes\uff09", "title": "\u6539\u8fdb contrib/pg_trgm \u7684 GIN \u64cd\u4f5c\u7b26\u7c7b\uff0c\u52a0\u901f\u540c\u65f6\u51fa\u73b0\u5e38\u89c1\u548c\u7f55\u89c1\u952e\u7684\u7d22\u5f15\u641c\u7d22", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "8689b470ab4b4e72e88cec37416db94b73e5f6ca3f7b3233028ae0ba0a0acfea", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["97f301464"]], "identity_text": "Improve contrib/pg_trgm's GIN operator class to speed up index searches in which both common and rare keys appear (Jeff Janes)", "commit_aliases": ["97f301464"], "source_commits": ["97f301464"], "source_entry_id": "9.6.0/changes/191", "db_id": "5b9591df28114970a4a283e1e18b762f", "patch_ids": ["2f05bd90a9f26ab7dcce4c612795dc23"], "statement_hash": "dfe3d6bada677d71d7874dfcc5ea1c72ddd1913cea5f45256b0e54cf8b275e85", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-f103ec25e5ee282d", "migration": false}, {"id": "9.6.0-d9d6f17d9e1e1ac5", "cves": [], "html": "<p>\u6539\u8fdb <code>contrib/pg_trgm</code> GIN \u7d22\u5f15\u4e2d\u76f8\u4f3c\u5ea6\u641c\u7d22\u7684\u6027\u80fd\uff08Christophe Fornaroli\uff09</p>", "text": "\u6539\u8fdb contrib/pg_trgm GIN \u7d22\u5f15\u4e2d\u76f8\u4f3c\u5ea6\u641c\u7d22\u7684\u6027\u80fd\uff08Christophe Fornaroli\uff09", "title": "\u6539\u8fdb contrib/pg_trgm GIN \u7d22\u5f15\u4e2d\u76f8\u4f3c\u5ea6\u641c\u7d22\u7684\u6027\u80fd", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "performance", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "74750d55a901ea9a67e341061492cb8f11997775c14dd7cb991b30b54879a676", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["25bfa7efd"]], "identity_text": "Improve performance of similarity searches in contrib/pg_trgm GIN indexes (Christophe Fornaroli)", "commit_aliases": ["25bfa7efd"], "source_commits": ["25bfa7efd"], "source_entry_id": "9.6.0/changes/192", "db_id": "250c55da93b3bdf976b686df8452a2a7", "patch_ids": ["0075cd5dbe01c0bf3da8fceb6e57e1b8"], "statement_hash": "ff1f82439ff10a091b0827b181bf114b7c4269f30d725eca926e06a666b7ccab", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=9.6.0#9.6.0-d9d6f17d9e1e1ac5", "migration": false}, {"id": "9.6.0-4a3de36dc89037c3", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/9.6/pgvisibility.html\" title=\"F.32.\u00a0pg_visibility\"><code>contrib/pg_visibility</code></a> \u6a21\u5757\u4ee5\u5141\u8bb8\u68c0\u67e5\u8868\u53ef\u89c1\u6027\u6620\u5c04\uff08Robert Haas\uff09</p>", "text": "\u6dfb\u52a0 contrib/pg_visibility \u6a21\u5757\u4ee5\u5141\u8bb8\u68c0\u67e5\u8868\u53ef\u89c1\u6027\u6620\u5c04\uff08Robert Haas\uff09", "title": "\u6dfb\u52a0 contrib/pg_visibility \u6a21\u5757\u4ee5\u5141\u8bb8\u68c0\u67e5\u8868\u53ef\u89c1\u6027\u6620\u5c04", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "875523bd9dc3248c5131b63810ada8bf8279631ce8f9812b3d4759381bf58707", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["71d05a2c7"], ["ba0a198fb"]], "identity_text": "Add contrib/pg_visibility module to allow examining table visibility maps (Robert Haas)", "commit_aliases": ["71d05a2c7", "ba0a198fb"], "source_commits": ["71d05a2c7", "ba0a198fb"], "source_entry_id": "9.6.0/changes/193", "db_id": "ffda91e9a6d67fbe5e29d1753cbf18cc", "patch_ids": ["a30ebd5ad3eb4a7e604ba7e017d5ecb7", "d7fb4d7edbabfe2836847f45396326c4"], "statement_hash": "0480605e49ef4aaa1aea6d562fc5e10b150cccdc59ed6efb3712a92fd2f6c57f", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-4a3de36dc89037c3", "migration": false}, {"id": "9.6.0-4cbc7cccbf207d07", "cves": [], "html": "<p>\u5411 <code>contrib/sslinfo</code> \u6dfb\u52a0 <a href=\"/docs/9.6/sslinfo.html\" title=\"F.37.\u00a0sslinfo\"><code>ssl_extension_info()</code></a> \u51fd\u6570\uff0c\u6253\u5370\u5f53\u524d\u8fde\u63a5\u6240\u7528 <code>X509</code> \u8bc1\u4e66\u4e2d\u5b58\u5728\u7684 <acronym>SSL</acronym> \u6269\u5c55\u4fe1\u606f\uff08Dmitry Voronin\uff09</p>", "text": "\u5411 contrib/sslinfo \u6dfb\u52a0 ssl_extension_info() \u51fd\u6570\uff0c\u6253\u5370\u5f53\u524d\u8fde\u63a5\u6240\u7528 X509 \u8bc1\u4e66\u4e2d\u5b58\u5728\u7684 SSL \u6269\u5c55\u4fe1\u606f\uff08Dmitry Voronin\uff09", "title": "\u5411 contrib/sslinfo \u6dfb\u52a0 ssl_extension_info() \u51fd\u6570\uff0c\u6253\u5370\u5f53\u524d\u8fde\u63a5\u6240\u7528 X509 \u8bc1\u4e66\u4e2d\u5b58\u5728\u7684 SSL \u6269\u5c55\u4fe1\u606f", "commits": [], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15", "source_hash": "f23cc3e35949d17f4140c38e8a6ef67515d8109b1e2b2f418b8c06d258b451d8", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["49124613f"]], "identity_text": "Add ssl_extension_info() function to contrib/sslinfo, to print information about SSL extensions present in the X509 certificate used for the current connection (Dmitry Voronin)", "commit_aliases": ["49124613f"], "source_commits": ["49124613f"], "source_entry_id": "9.6.0/changes/194", "db_id": "cb60565363bd377b713b647cdd3693f6", "patch_ids": ["4c6a14d6416551a086c462622f28077a"], "statement_hash": "b66cbe28782ca2c984df612f6bd17dd9273e2e066b3ad4d6d3216e07d7313666", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-4cbc7cccbf207d07", "migration": false}, {"id": "9.6.0-7234158e39b5c6ff", "cves": [], "html": "<p>\u5982\u679c\u6269\u5c55\u5728\u5916\u90e8\u670d\u52a1\u5668\u7684\u9009\u9879\u4e2d\u88ab\u5217\u5165\u767d\u540d\u5355\uff0c\u5141\u8bb8\u6269\u5c55\u63d0\u4f9b\u7684\u64cd\u4f5c\u7b26\u548c\u51fd\u6570\u88ab\u53d1\u9001\u5230\u8fdc\u7a0b\u6267\u884c\uff08Paul Ramsey\uff09</p>\n<p>\u5f53\u5df2\u77e5\u8fdc\u7a0b\u6570\u636e\u5e93\u4e2d\u5b58\u5728\u517c\u5bb9\u7248\u672c\u7684\u6269\u5c55\u65f6\uff0c\u7528\u6237\u53ef\u4ee5\u542f\u7528\u6b64\u7279\u6027\u3002\u5b83\u5141\u8bb8\u66f4\u9ad8\u6548\u5730\u6267\u884c\u6d89\u53ca\u6269\u5c55\u64cd\u4f5c\u7b26\u7684\u67e5\u8be2\u3002</p>", "text": "\u5982\u679c\u6269\u5c55\u5728\u5916\u90e8\u670d\u52a1\u5668\u7684\u9009\u9879\u4e2d\u88ab\u5217\u5165\u767d\u540d\u5355\uff0c\u5141\u8bb8\u6269\u5c55\u63d0\u4f9b\u7684\u64cd\u4f5c\u7b26\u548c\u51fd\u6570\u88ab\u53d1\u9001\u5230\u8fdc\u7a0b\u6267\u884c\uff08Paul Ramsey\uff09 \u5f53\u5df2\u77e5\u8fdc\u7a0b\u6570\u636e\u5e93\u4e2d\u5b58\u5728\u517c\u5bb9\u7248\u672c\u7684\u6269\u5c55\u65f6\uff0c\u7528\u6237\u53ef\u4ee5\u542f\u7528\u6b64\u7279\u6027\u3002\u5b83\u5141\u8bb8\u66f4\u9ad8\u6548\u5730\u6267\u884c\u6d89\u53ca\u6269\u5c55\u64cd\u4f5c\u7b26\u7684\u67e5\u8be2\u3002", "title": "\u5982\u679c\u6269\u5c55\u5728\u5916\u90e8\u670d\u52a1\u5668\u7684\u9009\u9879\u4e2d\u88ab\u5217\u5165\u767d\u540d\u5355\uff0c\u5141\u8bb8\u6269\u5c55\u63d0\u4f9b\u7684\u64cd\u4f5c\u7b26\u548c\u51fd\u6570\u88ab\u53d1\u9001\u5230\u8fdc\u7a0b\u6267\u884c", "commits": [], "section": "\u9644\u52a0\u6a21\u5757 / postgres_fdw", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15.3", "source_hash": "b1750b6d0c3360193337c032c6c8580e4f2e5f9844b53124af76b270748717ce", "section_path": ["\u9644\u52a0\u6a21\u5757", "postgres_fdw"], "commit_groups": [["d89494166"]], "identity_text": "Allow extension-provided operators and functions to be sent for remote execution, if the extension is whitelisted in the foreign server's options (Paul Ramsey) Users can enable this feature when the extension is known to exist in a compatible version in the remote database. It allows more efficient execution of queries involving extension operators.", "commit_aliases": ["d89494166"], "source_commits": ["d89494166"], "source_entry_id": "9.6.0/changes/195", "db_id": "c4578d22874d856fa735e46928c4b5e5", "patch_ids": ["4fd7f051487035c59aa72d2bf40c825d"], "statement_hash": "17acb721c1c3ef618040a116de6cfa05d7955473edb37995e6bcf684d0dadb4d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-7234158e39b5c6ff", "migration": false}, {"id": "9.6.0-a409185d42636fcd", "cves": [], "html": "<p>\u8003\u8651\u5728\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u6267\u884c\u6392\u5e8f\uff08Ashutosh Bapat\uff09</p>", "text": "\u8003\u8651\u5728\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u6267\u884c\u6392\u5e8f\uff08Ashutosh Bapat\uff09", "title": "\u8003\u8651\u5728\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u6267\u884c\u6392\u5e8f", "commits": [], "section": "\u9644\u52a0\u6a21\u5757 / postgres_fdw", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15.3", "source_hash": "dd4b256c6ba805d8c6da38120a0daaa527baf1606e4eb90b9bda0733fb637033", "section_path": ["\u9644\u52a0\u6a21\u5757", "postgres_fdw"], "commit_groups": [["ccd8f9792"], ["f18c944b6"]], "identity_text": "Consider performing sorts on the remote server (Ashutosh Bapat)", "commit_aliases": ["ccd8f9792", "f18c944b6"], "source_commits": ["ccd8f9792", "f18c944b6"], "source_entry_id": "9.6.0/changes/196", "db_id": "055434100a08ae79566cc1e36ce69ba0", "patch_ids": ["8e0521b5877c9d27c9dca0d4d0741a2c", "908026520dd9f586b7806956bc3591be"], "statement_hash": "988446c69735d5b5dc09ea5e6a624d1d53b079dd9194e87e07c1ed3dcc7f4579", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-a409185d42636fcd", "migration": false}, {"id": "9.6.0-810b7099b3f190bd", "cves": [], "html": "<p>\u8003\u8651\u5728\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u6267\u884c\u8fde\u63a5\uff08Shigeru Hanada\u3001Ashutosh Bapat\uff09</p>", "text": "\u8003\u8651\u5728\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u6267\u884c\u8fde\u63a5\uff08Shigeru Hanada\u3001Ashutosh Bapat\uff09", "title": "\u8003\u8651\u5728\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u6267\u884c\u8fde\u63a5", "commits": [], "section": "\u9644\u52a0\u6a21\u5757 / postgres_fdw", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15.3", "source_hash": "59f667f12e6717bed803fa6b31cd61ecb6e22d947d419c668389cfc96cee59d8", "section_path": ["\u9644\u52a0\u6a21\u5757", "postgres_fdw"], "commit_groups": [["aa09cd242"], ["e4106b252"]], "identity_text": "Consider performing joins on the remote server (Shigeru Hanada, Ashutosh Bapat)", "commit_aliases": ["aa09cd242", "e4106b252"], "source_commits": ["aa09cd242", "e4106b252"], "source_entry_id": "9.6.0/changes/197", "db_id": "285c761df9e21f4aa666447f243c7bd4", "patch_ids": ["a37a45b3cc21f731a9a72b873bf142a2", "dc4a8a80ab6e1c396a3e33ee665833d4"], "statement_hash": "694b8e7bcbb79087e060ef3970d1729a3855e87df47c8ef214ea85f484bd2147", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-810b7099b3f190bd", "migration": false}, {"id": "9.6.0-4cd528f015128bfb", "cves": [], "html": "<p>\u5728\u53ef\u884c\u4e4b\u5904\u5b8c\u5168\u5728\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u6267\u884c <code>UPDATE</code> \u6216 <code>DELETE</code>\uff08Etsuro Fujita\uff09</p>\n<p>\u4ee5\u524d\u8fdc\u7a0b\u66f4\u65b0\u6d89\u53ca\u53d1\u9001 <code>SELECT FOR UPDATE</code> \u547d\u4ee4\u7136\u540e\u9010\u4e2a\u66f4\u65b0\u6216\u5220\u9664\u9009\u4e2d\u7684\u884c\u3002\u867d\u7136\u5982\u679c\u64cd\u4f5c\u9700\u8981\u4efb\u4f55\u672c\u5730\u5904\u7406\u90a3\u4ecd\u7136\u5fc5\u8981\uff0c\u4f46\u5982\u679c\u67e5\u8be2\u7684\u6240\u6709\u5143\u7d20\u90fd\u53ef\u4ee5\u5b89\u5168\u5730\u53d1\u9001\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\uff0c\u73b0\u5728\u53ef\u4ee5\u8fdc\u7a0b\u5b8c\u6210\u3002</p>", "text": "\u5728\u53ef\u884c\u4e4b\u5904\u5b8c\u5168\u5728\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u6267\u884c UPDATE \u6216 DELETE\uff08Etsuro Fujita\uff09 \u4ee5\u524d\u8fdc\u7a0b\u66f4\u65b0\u6d89\u53ca\u53d1\u9001 SELECT FOR UPDATE \u547d\u4ee4\u7136\u540e\u9010\u4e2a\u66f4\u65b0\u6216\u5220\u9664\u9009\u4e2d\u7684\u884c\u3002\u867d\u7136\u5982\u679c\u64cd\u4f5c\u9700\u8981\u4efb\u4f55\u672c\u5730\u5904\u7406\u90a3\u4ecd\u7136\u5fc5\u8981\uff0c\u4f46\u5982\u679c\u67e5\u8be2\u7684\u6240\u6709\u5143\u7d20\u90fd\u53ef\u4ee5\u5b89\u5168\u5730\u53d1\u9001\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\uff0c\u73b0\u5728\u53ef\u4ee5\u8fdc\u7a0b\u5b8c\u6210\u3002", "title": "\u5728\u53ef\u884c\u4e4b\u5904\u5b8c\u5168\u5728\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u6267\u884c UPDATE \u6216 DELETE", "commits": [], "section": "\u9644\u52a0\u6a21\u5757 / postgres_fdw", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15.3", "source_hash": "24bda9ac6b14791ad633b118b10c514e94b46092f3f4289d003c9e3d0d1fd4fb", "section_path": ["\u9644\u52a0\u6a21\u5757", "postgres_fdw"], "commit_groups": [["0bf3ae88a"]], "identity_text": "When feasible, perform UPDATE or DELETE entirely on the remote server (Etsuro Fujita) Formerly, remote updates involved sending a SELECT FOR UPDATE command and then updating or deleting the selected rows one-by-one. While that is still necessary if the operation requires any local processing, it can now be done remotely if all elements of the query are safe to send to the remote server.", "commit_aliases": ["0bf3ae88a"], "source_commits": ["0bf3ae88a"], "source_entry_id": "9.6.0/changes/198", "db_id": "2e0973867acfeef348a599189a8bb3c7", "patch_ids": ["5a36e5a15b72a1bc2d2fb282cc577866"], "statement_hash": "9b0a0578bf7894edfcbb587a8b24b2e5efe9bc9793b8e2510e2fe7699bd9122b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-4cd528f015128bfb", "migration": false}, {"id": "9.6.0-e58b22dfd46850d7", "cves": [], "html": "<p>\u5141\u8bb8\u628a\u83b7\u53d6\u5927\u5c0f\u8bbe\u7f6e\u4e3a\u670d\u52a1\u5668\u6216\u8868\u9009\u9879\uff08Corey Huinker\uff09</p>\n<p>\u4ee5\u524d <code>postgres_fdw</code> \u603b\u662f\u4ece\u8fdc\u7a0b\u67e5\u8be2\u6bcf\u6b21\u83b7\u53d6 100 \u884c\uff1b\u73b0\u5728\u8be5\u884c\u4e3a\u53ef\u914d\u7f6e\u3002</p>", "text": "\u5141\u8bb8\u628a\u83b7\u53d6\u5927\u5c0f\u8bbe\u7f6e\u4e3a\u670d\u52a1\u5668\u6216\u8868\u9009\u9879\uff08Corey Huinker\uff09 \u4ee5\u524d postgres_fdw \u603b\u662f\u4ece\u8fdc\u7a0b\u67e5\u8be2\u6bcf\u6b21\u83b7\u53d6 100 \u884c\uff1b\u73b0\u5728\u8be5\u884c\u4e3a\u53ef\u914d\u7f6e\u3002", "title": "\u5141\u8bb8\u628a\u83b7\u53d6\u5927\u5c0f\u8bbe\u7f6e\u4e3a\u670d\u52a1\u5668\u6216\u8868\u9009\u9879", "commits": [], "section": "\u9644\u52a0\u6a21\u5757 / postgres_fdw", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15.3", "source_hash": "8ed489b492c73014a599ab54f050dd76b6090dce31146b512a59794a1cede28e", "section_path": ["\u9644\u52a0\u6a21\u5757", "postgres_fdw"], "commit_groups": [["dc203dc3a"]], "identity_text": "Allow the fetch size to be set as a server or table option (Corey Huinker) Formerly, postgres_fdw always fetched 100 rows at a time from remote queries; now that behavior is configurable.", "commit_aliases": ["dc203dc3a"], "source_commits": ["dc203dc3a"], "source_entry_id": "9.6.0/changes/199", "db_id": "2e3bfde72456761fa2ebb7176e1627d6", "patch_ids": ["262a25a954c7547f16b2dacfe69244f3"], "statement_hash": "20265f2813b207c9b6a2410d6328b9c16bd84d80ba5b56f32d6ce8fde0dc5681", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-e58b22dfd46850d7", "migration": false}, {"id": "9.6.0-e20905eb6140cbc7", "cves": [], "html": "<p>\u5bf9\u5168\u90e8\u6620\u5c04\u5230\u540c\u4e00\u8fdc\u7a0b\u7528\u6237\u7684\u672c\u5730\u7528\u6237 ID \u4f7f\u7528\u5355\u4e00\u5916\u90e8\u670d\u52a1\u5668\u8fde\u63a5\uff08Ashutosh Bapat\uff09</p>", "text": "\u5bf9\u5168\u90e8\u6620\u5c04\u5230\u540c\u4e00\u8fdc\u7a0b\u7528\u6237\u7684\u672c\u5730\u7528\u6237 ID \u4f7f\u7528\u5355\u4e00\u5916\u90e8\u670d\u52a1\u5668\u8fde\u63a5\uff08Ashutosh Bapat\uff09", "title": "\u5bf9\u5168\u90e8\u6620\u5c04\u5230\u540c\u4e00\u8fdc\u7a0b\u7528\u6237\u7684\u672c\u5730\u7528\u6237 ID \u4f7f\u7528\u5355\u4e00\u5916\u90e8\u670d\u52a1\u5668\u8fde\u63a5", "commits": [], "section": "\u9644\u52a0\u6a21\u5757 / postgres_fdw", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15.3", "source_hash": "e780f8183c29ebe897416b3626e1c461ae805afb56de256dd6fb25adffbe085e", "section_path": ["\u9644\u52a0\u6a21\u5757", "postgres_fdw"], "commit_groups": [["96198d94c"]], "identity_text": "Use a single foreign-server connection for local user IDs that all map to the same remote user (Ashutosh Bapat)", "commit_aliases": ["96198d94c"], "source_commits": ["96198d94c"], "source_entry_id": "9.6.0/changes/200", "db_id": "bafce85fbfd2335329267f50f58f9b2f", "patch_ids": ["69469ab5d59e3664c3232f3b0c5cf159"], "statement_hash": "17013ec01cb413274c6c392dce1411285dcb92e8bb4a4f7659114bba83a1a429", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-e20905eb6140cbc7", "migration": false}, {"id": "9.6.0-c23a72f51cadfedd", "cves": [], "html": "<p>\u628a\u67e5\u8be2\u53d6\u6d88\u8bf7\u6c42\u4f20\u8f93\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\uff08Michael Paquier\u3001Etsuro Fujita\uff09</p>\n<p>\u4ee5\u524d\u672c\u5730\u67e5\u8be2\u53d6\u6d88\u8bf7\u6c42\u4e0d\u4f1a\u5bfc\u81f4\u5df2\u53d1\u9001\u7684\u8fdc\u7a0b\u67e5\u8be2\u63d0\u524d\u7ec8\u6b62\u3002</p>", "text": "\u628a\u67e5\u8be2\u53d6\u6d88\u8bf7\u6c42\u4f20\u8f93\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\uff08Michael Paquier\u3001Etsuro Fujita\uff09 \u4ee5\u524d\u672c\u5730\u67e5\u8be2\u53d6\u6d88\u8bf7\u6c42\u4e0d\u4f1a\u5bfc\u81f4\u5df2\u53d1\u9001\u7684\u8fdc\u7a0b\u67e5\u8be2\u63d0\u524d\u7ec8\u6b62\u3002", "title": "\u628a\u67e5\u8be2\u53d6\u6d88\u8bf7\u6c42\u4f20\u8f93\u5230\u8fdc\u7a0b\u670d\u52a1\u5668", "commits": [], "section": "\u9644\u52a0\u6a21\u5757 / postgres_fdw", "category": "feature", "source_url": "/docs/release/9.6.0/#id-1.11.6.29.5.15.3", "source_hash": "b25f6b4665aa366bf5bc9bcceffa59327d9aef8b16922a41a6ec5fbe7bcfebf2", "section_path": ["\u9644\u52a0\u6a21\u5757", "postgres_fdw"], "commit_groups": [["1b812afb0"], ["f039eaac7"]], "identity_text": "Transmit query cancellation requests to the remote server (Michael Paquier, Etsuro Fujita) Previously, a local query cancellation request did not cause an already-sent remote query to terminate early.", "commit_aliases": ["1b812afb0", "f039eaac7"], "source_commits": ["1b812afb0", "f039eaac7"], "source_entry_id": "9.6.0/changes/201", "db_id": "19c853c7088a13ef89a354c426345338", "patch_ids": ["229d1d438509a06e397393fe78e485c6", "e261523b424157961096e123edcafc40"], "statement_hash": "2a2a12fdbd0cb4fc80ad03bb0acae36ea6c02112b00958ff6624b12d8e8b141e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=9.6.0#9.6.0-c23a72f51cadfedd", "migration": false}], "initial_entry_count": 214, "migration_html": "<p>\u5e0c\u671b\u4ece\u4efb\u4f55\u4e4b\u524d\u7684\u7248\u672c\u8fc1\u79fb\u6570\u636e\u7684\u7528\u6237\uff0c\u9700\u8981\u4f7f\u7528<a href=\"/docs/9.6/app-pg-dumpall.html\" title=\"pg_dumpall\"><span><span>pg_dumpall</span></span></a>\u8fdb\u884c\u8f6c\u50a8/\u6062\u590d\uff0c\u6216\u4f7f\u7528<a href=\"/docs/9.6/pgupgrade.html\" title=\"pg_upgrade\"><span><span>pg_upgrade</span></span></a>\u3002</p>\n<p>\u7248\u672c 9.6 \u5305\u542b\u8bb8\u591a\u53ef\u80fd\u5f71\u54cd\u4e0e\u4ee5\u524d\u7248\u672c\u517c\u5bb9\u6027\u7684\u66f4\u6539\u3002\u6ce8\u610f\u4ee5\u4e0b\u4e0d\u517c\u5bb9\u4e4b\u5904\uff1a</p>\n<div>\n</div>", "category_filters": [{"key": "feature", "label": "\u65b0\u529f\u80fd", "count": 169}, {"key": "bugfix", "label": "BUG \u4fee\u590d", "count": 6}, {"key": "security", "label": "\u5b89\u5168\u76f8\u5173", "count": 0}, {"key": "performance", "label": "\u6027\u80fd\u6539\u8fdb", "count": 26}, {"key": "compatibility", "label": "\u517c\u5bb9\u6027\u53d8\u5316", "count": 13}, {"key": "improvement", "label": "\u5176\u4ed6\u6539\u8fdb", "count": 0}], "security_rows": [{"id": "CVE-2021-3449", "title": "CVE-2021-3449", "url": "https://www.postgresql.org/support/security/CVE-2021-3449/", "score": null, "vector": "", "description": "", "description_language": "en", "fixed": "", "fixed_url": "", "affected": "", "component": "", "mentions": [{"build": "9.6.23", "version": "9.6.23", "title": "\u66f4\u5f7b\u5e95\u5730\u7981\u6b62 SSL \u91cd\u534f\u5546", "url": "/docs/compare/?release=9.6.23#9.6.23-aa240a8289197363"}], "evidence": "release-note-mention"}, {"id": "CVE-2021-32028", "title": "Memory disclosure in INSERT ... ON CONFLICT ... DO UPDATE", "url": "https://www.postgresql.org/support/security/CVE-2021-32028/", "score": 6.5, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "description": "Using an INSERT ... ON CONFLICT ... DO UPDATE command on a purpose-crafted table, an attacker can read arbitrary bytes of server memory. In the default configuration, any authenticated database user can create prerequisite objects and complete this attack at will. A user lacking the CREATE and TEMPORARY privileges on all databases and the CREATE privilege on all schemas cannot use this attack at will.\n\nThe PostgreSQL project thanks Andres Freund for reporting this problem.", "description_language": "en", "fixed": "9.6.22", "fixed_url": "/docs/compare/?release=9.6.22", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.22", "version": "9.6.22", "title": "\u4fee\u590d INSERT ... ON CONFLICT ... UPDATE \u76ee\u6807\u5217\u8868\u4e2d\u201c\u5783\u573e\u201d\u5217\u7684\u5904\u7406\u4e0d\u5f53", "url": "/docs/compare/?release=9.6.22#9.6.22-98b39e1ef9c989a0"}], "evidence": "branch-matrix"}, {"id": "CVE-2021-32027", "title": "Buffer overrun from integer overflow in array subscripting calculations", "url": "https://www.postgresql.org/support/security/CVE-2021-32027/", "score": 6.5, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N", "description": "While modifying certain SQL array values, missing bounds checks let authenticated database users write arbitrary bytes to a wide area of server memory.\n\nThe PostgreSQL project thanks Tom Lane for reporting this problem.", "description_language": "en", "fixed": "9.6.22", "fixed_url": "/docs/compare/?release=9.6.22", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.22", "version": "9.6.22", "title": "\u9632\u6b62\u6570\u7ec4\u4e0b\u6807\u8ba1\u7b97\u4e2d\u7684\u6574\u6570\u6ea2\u51fa", "url": "/docs/compare/?release=9.6.22#9.6.22-b9c1a3a97eb4a245"}], "evidence": "branch-matrix"}, {"id": "CVE-2021-23222", "title": "libpq processes unencrypted bytes from man-in-the-middle", "url": "https://www.postgresql.org/support/security/CVE-2021-23222/", "score": 3.7, "vector": "AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N", "description": "A man-in-the-middle attacker can inject false responses to the client's first few queries, despite the use of SSL certificate verification and encryption.\n\nIf more preconditions hold, the attacker can exfiltrate the client's password or other confidential data that might be transmitted early in a session. The attacker must have a way to trick the client's intended server into making the confidential data accessible to the attacker. A known implementation having that property is a PostgreSQL configuration vulnerable to CVE-2021-23214 . As with any exploitation of CVE-2021-23214 , the server must be using trust authentication with a clientcert requirement or using cert authentication. To disclose a password, the client must be in possession of a password, which is atypical when using an authentication configuration vulnerable to CVE-2021-23214 . The attacker must have some other way to access the server to retrieve the exfiltrated data (a valid, unprivileged login account would be sufficient).\n\nThe PostgreSQL project thanks Jacob Champion for reporting this problem.", "description_language": "en", "fixed": "9.6.24", "fixed_url": "/docs/compare/?release=9.6.24", "affected": "9.6", "component": "client", "mentions": [{"build": "9.6.24", "version": "9.6.24", "title": "\u8ba9 libpq \u62d2\u7edd SSL \u6216 GSS \u52a0\u5bc6\u63e1\u624b\u4e4b\u540e\u7684\u591a\u4f59\u6570\u636e", "url": "/docs/compare/?release=9.6.24#9.6.24-0eb2aa94a5567b47"}], "evidence": "branch-matrix"}, {"id": "CVE-2021-23214", "title": "Server processes unencrypted bytes from man-in-the-middle", "url": "https://www.postgresql.org/support/security/CVE-2021-23214/", "score": 8.1, "vector": "AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H", "description": "When the server is configured to use trust authentication with a clientcert requirement or to use cert authentication, a man-in-the-middle attacker can inject arbitrary SQL queries when a connection is first established, despite the use of SSL certificate verification and encryption. This is similar to CVE-2011-0411 (different product).\n\nThe PostgreSQL project thanks Jacob Champion for reporting this problem.", "description_language": "en", "fixed": "9.6.24", "fixed_url": "/docs/compare/?release=9.6.24", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.24", "version": "9.6.24", "title": "\u8ba9\u670d\u52a1\u5668\u62d2\u7edd SSL \u6216 GSS \u52a0\u5bc6\u63e1\u624b\u4e4b\u540e\u7684\u591a\u4f59\u6570\u636e", "url": "/docs/compare/?release=9.6.24#9.6.24-c319beb02a50a88f"}, {"build": "9.6.24", "version": "9.6.24", "title": "\u8ba9 libpq \u62d2\u7edd SSL \u6216 GSS \u52a0\u5bc6\u63e1\u624b\u4e4b\u540e\u7684\u591a\u4f59\u6570\u636e", "url": "/docs/compare/?release=9.6.24#9.6.24-0eb2aa94a5567b47"}], "evidence": "branch-matrix"}, {"id": "CVE-2020-25696", "title": "psql's \\gset allows overwriting specially treated variables", "url": "https://www.postgresql.org/support/security/CVE-2020-25696/", "score": 7.5, "vector": "AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H", "description": "The \\gset meta-command, which sets psql variables based on query results, does not distinguish variables that control psql behavior. If an interactive psql session uses \\gset when querying a compromised server, the attacker can execute arbitrary code as the operating system account running psql . Using \\gset with a prefix not found among specially treated variables, e.g. any lowercase string, precludes the attack in an unpatched psql .\n\nThe PostgreSQL project thanks Nick Cleaton for reporting this problem.", "description_language": "en", "fixed": "9.6.20", "fixed_url": "/docs/compare/?release=9.6.20", "affected": "9.6", "component": "client", "mentions": [{"build": "9.6.20", "version": "9.6.20", "title": "\u9632\u6b62 psql \u7684 \\gset \u547d\u4ee4\u4fee\u6539\u7279\u6b8a\u5904\u7406\u7684\u53d8\u91cf", "url": "/docs/compare/?release=9.6.20#9.6.20-1f21dcb4d2e98063"}], "evidence": "branch-matrix"}, {"id": "CVE-2020-25695", "title": "Multiple features escape \"security restricted operation\" sandbox", "url": "https://www.postgresql.org/support/security/CVE-2020-25695/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "An attacker having permission to create non-temporary objects in at least one schema can execute arbitrary SQL functions under the identity of a superuser.\n\nWhile promptly updating PostgreSQL is the best remediation for most users, a user unable to do that can work around the vulnerability by disabling autovacuum and not manually running ANALYZE , CLUSTER , REINDEX , CREATE INDEX , VACUUM FULL , REFRESH MATERIALIZED VIEW , or a restore from output of the pg_dump command. Performance may degrade quickly under this workaround.\n\nVACUUM without the FULL option is safe, and all commands are fine when a trusted user owns the target object.\n\nThe PostgreSQL project thanks Etienne Stalmans for reporting this problem.", "description_language": "en", "fixed": "9.6.20", "fixed_url": "/docs/compare/?release=9.6.20", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.20", "version": "9.6.20", "title": "\u7981\u6b62\u5728\u7d22\u5f15\u8868\u8fbe\u5f0f\u548c\u7269\u5316\u89c6\u56fe\u67e5\u8be2\u4e2d\u6267\u884c DECLARE CURSOR ... WITH HOLD \u4ee5\u53ca\u89e6\u53d1\u5ef6\u8fdf\u89e6\u53d1\u5668", "url": "/docs/compare/?release=9.6.20#9.6.20-30b9a257c6e59de0"}], "evidence": "branch-matrix"}, {"id": "CVE-2020-25694", "title": "Reconnection can downgrade connection security settings", "url": "https://www.postgresql.org/support/security/CVE-2020-25694/", "score": 8.1, "vector": "AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H", "description": "Many PostgreSQL-provided client applications have options that create additional database connections. Some of those applications reuse only the basic connection parameters (e.g. host , user , port ), dropping others. If this drops a security-relevant parameter (e.g. channel_binding , sslmode , requirepeer , gssencmode ), the attacker has an opportunity to complete a MITM attack or observe cleartext transmission.\n\nAffected applications are clusterdb , pg_dump , pg_restore , psql , reindexdb , and vacuumdb . The vulnerability arises only if one invokes an affected client application with a connection string containing a security-relevant parameter.\n\nThis also fixes how the \\connect command of psql reuses connection parameters, i.e. all non-overridden parameters from a previous connection string now re-used.\n\nThe PostgreSQL project thanks Peter Eisentraut for reporting this problem.", "description_language": "en", "fixed": "9.6.20", "fixed_url": "/docs/compare/?release=9.6.20", "affected": "9.6", "component": "client", "mentions": [{"build": "9.6.20", "version": "9.6.20", "title": "\u4fee\u590d pg_dump\u3001pg_restore\u3001 clusterdb\u3001reindexdb \u548c vacuumdb \u4e2d\u590d\u6742\u8fde\u63a5\u5b57\u7b26\u4e32\u53c2\u6570\u7684\u7528\u6cd5", "url": "/docs/compare/?release=9.6.20#9.6.20-be5bff9c020a9205"}, {"build": "9.6.20", "version": "9.6.20", "title": "\u5f53 psql \u7684 \\connect \u547d\u4ee4\u590d\u7528\u8fde\u63a5\u53c2\u6570\u65f6\uff0c\u786e\u4fdd\u5148\u524d\u8fde\u63a5\u5b57\u7b26\u4e32\u4e2d\u6240\u6709\u672a\u88ab\u8986\u76d6\u7684\u53c2\u6570\u90fd\u88ab\u590d\u7528", "url": "/docs/compare/?release=9.6.20#9.6.20-1512bab65015e57b"}], "evidence": "branch-matrix"}, {"id": "CVE-2020-1720", "title": "ALTER ... DEPENDS ON EXTENSION is missing authorization checks.", "url": "https://www.postgresql.org/support/security/CVE-2020-1720/", "score": 3.1, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N", "description": "The ALTER ... DEPENDS ON EXTENSION sub-commands do not perform authorization checks, which can allow an unprivileged user to drop any function, procedure, materialized view, index, or trigger under certain conditions. This attack is possible if an administrator has installed an extension and an unprivileged user can CREATE , or an extension owner either executes DROP EXTENSION predictably or can be convinced to execute DROP EXTENSION .\n\nThe PostgreSQL project thanks Tom Lane for reporting this problem.", "description_language": "en", "fixed": "9.6.17", "fixed_url": "/docs/compare/?release=9.6.17", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.17", "version": "9.6.17", "title": "\u4e3a ALTER ... DEPENDS ON EXTENSION \u8865\u4e0a\u7f3a\u5931\u7684\u6743\u9650\u68c0\u67e5", "url": "/docs/compare/?release=9.6.17#9.6.17-43b06b9c53a094d4"}], "evidence": "branch-matrix"}, {"id": "CVE-2020-14350", "title": "Uncontrolled search path element in CREATE EXTENSION", "url": "https://www.postgresql.org/support/security/CVE-2020-14350/", "score": 7.1, "vector": "AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H", "description": "When a superuser runs certain CREATE EXTENSION statements, users may be able to execute arbitrary SQL functions under the identity of that superuser. The attacker must have permission to create objects in the new extension's schema or a schema of a prerequisite extension. Not all extensions are vulnerable.\n\nIn addition to correcting the extensions provided with PostgreSQL, the PostgreSQL Global Development Group is issuing guidance for third-party extension authors to secure their own work.\n\nThe PostgreSQL project thanks Andres Freund for reporting this problem.", "description_language": "en", "fixed": "9.6.19", "fixed_url": "/docs/compare/?release=9.6.19", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.19", "version": "9.6.19", "title": "\u4f7f contrib \u6a21\u5757\u7684\u5b89\u88c5\u811a\u672c\u66f4\u5b89\u5168", "url": "/docs/compare/?release=9.6.19#9.6.19-781ce435b7e40fa2"}], "evidence": "branch-matrix"}, {"id": "CVE-2020-10733", "title": "Windows installer runs executables from uncontrolled directories", "url": "https://www.postgresql.org/support/security/CVE-2020-10733/", "score": 6.7, "vector": "AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H", "description": "The Windows installer for PostgreSQL invokes system-provided executables that do not have fully-qualified paths. Executables in the directory where the installer loads or the current working directory take precedence over the intended executables. An attacker having permission to add files into one of those directories can use this to execute arbitrary code with the installer's administrative rights.\n\nThe PostgreSQL project thanks Hou JingYi (@hjy79425575) for reporting this problem.", "description_language": "en", "fixed": "9.6.18", "fixed_url": "/docs/compare/?release=9.6.18", "affected": "9.6", "component": "packaging", "mentions": [], "evidence": "branch-matrix"}, {"id": "CVE-2019-3466", "title": "pg_ctlcluster script in postgresql-common does not drop privileges when creating socket/statistics temporary directories", "url": "https://www.postgresql.org/support/security/CVE-2019-3466/", "score": 8.4, "vector": "AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:H", "description": "A PostgreSQL superuser could escalate to root using a deficiency in the pg_ctlcluster command. pg_ctlcluster is a utility provided by the \"postgresql-common\" package that is installed with PostgreSQL on Debian and Ubuntu platforms.", "description_language": "en", "fixed": "9.6.16", "fixed_url": "/docs/compare/?release=9.6.16", "affected": "9.6", "component": "packaging", "mentions": [], "evidence": "branch-matrix"}, {"id": "CVE-2019-10211", "title": "Windows installer bundled OpenSSL executes code from unprotected directory", "url": "https://www.postgresql.org/support/security/CVE-2019-10211/", "score": 7.8, "vector": "AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "When the database server or libpq client library initializes SSL, libeay32.dll attempts to read configuration from a hard-coded directory. Typically, the directory does not exist, but any local user could create it and inject configuration. This configuration can direct OpenSSL to load and execute arbitrary code as the user running a PostgreSQL server or client.\n\nMost PostgreSQL client tools and libraries use libpq , and one can encounter this vulnerability by using any of them. This vulnerability is much like CVE-2019-5443 , but it originated independently. One can work around the vulnerability by setting environment variable OPENSSL_CONF to \"NUL:/openssl.cnf\" or any other name that cannot exist as a file.\n\nThe PostgreSQL project thanks Daniel Gustafsson of the curl security team for reporting this problem.", "description_language": "en", "fixed": "9.6.15", "fixed_url": "/docs/compare/?release=9.6.15", "affected": "9.6", "component": "packaging", "mentions": [], "evidence": "branch-matrix"}, {"id": "CVE-2019-10210", "title": "Windows installer writes superuser password to unprotected temporary file", "url": "https://www.postgresql.org/support/security/CVE-2019-10210/", "score": 6.7, "vector": "AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H", "description": "The EnterpriseDB Windows installer writes a password to a temporary file in its installation directory, creates initial databases, and deletes the file. During those seconds while the file exists, a local attacker can read the PostgreSQL superuser password from the file.\n\nThe PostgreSQL project thanks Noah Misch for reporting this problem.", "description_language": "en", "fixed": "9.6.15", "fixed_url": "/docs/compare/?release=9.6.15", "affected": "9.6", "component": "packaging", "mentions": [], "evidence": "branch-matrix"}, {"id": "CVE-2019-10208", "title": "TYPE in pg_temp executes arbitrary SQL during SECURITY DEFINER execution", "url": "https://www.postgresql.org/support/security/CVE-2019-10208/", "score": 7.5, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Given a suitable SECURITY DEFINER function, an attacker can execute arbitrary SQL under the identity of the function owner. An attack requires EXECUTE permission on the function, which must itself contain a function call having inexact argument type match. For example, length('foo'::varchar) and length('foo') are inexact, while length('foo'::text) is exact.\n\nAs part of exploiting this vulnerability, the attacker uses CREATE DOMAIN to create a type in a pg_temp schema. The attack pattern and fix are similar to that for CVE-2007-2138 .\n\nWriting SECURITY DEFINER functions continues to require following the considerations noted in the documentation:\n\nhttps://www.postgresql.org/docs/current/sql-createfunction.html#SQL-CREATEFUNCTION-SECURITY\n\nThe PostgreSQL project thanks Tom Lane for reporting this problem.", "description_language": "en", "fixed": "9.6.15", "fixed_url": "/docs/compare/?release=9.6.15", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.15", "version": "9.6.15", "title": "\u8981\u6c42\u4f7f\u7528\u51fd\u6570\u5f0f\u8f6c\u6362\u8bed\u6cd5\u8f6c\u6362\u5230\u4e34\u65f6\u7c7b\u578b\u65f6\u8fdb\u884c\u6a21\u5f0f\u9650\u5b9a", "url": "/docs/compare/?release=9.6.15#9.6.15-a1ed66934d01ba97"}], "evidence": "branch-matrix"}, {"id": "CVE-2019-10130", "title": "Selectivity estimators bypass row security policies", "url": "https://www.postgresql.org/support/security/CVE-2019-10130/", "score": 3.1, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N", "description": "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 able to execute SQL queries with permissions to read a given column could craft a leaky operator that could read whatever data had been sampled from that column. If this happened to include values from rows that the user is forbidden to see by a row security policy, the user could effectively bypass the policy. This is fixed by only allowing a non-leakproof operator to use this data if there are no relevant row security policies for the table.\n\nThe PostgreSQL project thanks Dean Rasheed for reporting this problem.", "description_language": "en", "fixed": "9.6.13", "fixed_url": "/docs/compare/?release=9.6.13", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.13", "version": "9.6.13", "title": "\u9632\u6b62\u901a\u8fc7\u9009\u62e9\u7387\u4f30\u8ba1\u5668\u7ed5\u8fc7\u884c\u7ea7\u5b89\u5168\u7b56\u7565", "url": "/docs/compare/?release=9.6.13#9.6.13-35d4445257f1090d"}], "evidence": "branch-matrix"}, {"id": "CVE-2019-10128", "title": "EnterpriseDB Windows installer does not clear permissive ACL entries", "url": "https://www.postgresql.org/support/security/CVE-2019-10128/", "score": 7.0, "vector": "AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Due to both the EnterpriseDB and BigSQL Windows installers not locking down the permissions of the PostgreSQL binary installation directory and the data directory, an unprivileged Windows user account and an unprivileged PostgreSQL account could cause the PostgreSQL service account to execute arbitrary code.\n\nThis vulnerability is present in all supported versions of PostgreSQL for these installers, and possibly exists in older versions. Both sets of installers have fixed the permissions for these directories for both new and existing installations. If you have installed PostgreSQL on Windows using other methods, we advise that you check that your PostgreSQL binary directories are writable only to trusted users and that your data directories are only accessible to trusted users.\n\nThe PostgreSQL project thanks Conner Jones for reporting this problem.", "description_language": "en", "fixed": "9.6.13", "fixed_url": "/docs/compare/?release=9.6.13", "affected": "9.6", "component": "packaging", "mentions": [], "evidence": "branch-matrix"}, {"id": "CVE-2019-10127", "title": "BigSQL Windows installer does not clear permissive ACL entries.", "url": "https://www.postgresql.org/support/security/CVE-2019-10127/", "score": 7.0, "vector": "AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Due to both the EnterpriseDB and BigSQL Windows installers not locking down the permissions of the PostgreSQL binary installation directory and the data directory, an unprivileged Windows user account and an unprivileged PostgreSQL account could cause the PostgreSQL service account to execute arbitrary code.\n\nThis vulnerability is present in all supported versions of PostgreSQL for these installers, and possibly exists in older versions. Both sets of installers have fixed the permissions for these directories for both new and existing installations. If you have installed PostgreSQL on Windows using other methods, we advise that you check that your PostgreSQL binary directories are writable only to trusted users and that your data directories are only accessible to trusted users.\n\nThe PostgreSQL project thanks Conner Jones for reporting this problem.", "description_language": "en", "fixed": "9.6.13", "fixed_url": "/docs/compare/?release=9.6.13", "affected": "9.6", "component": "packaging", "mentions": [], "evidence": "branch-matrix"}, {"id": "CVE-2018-1115", "title": "Too-permissive access control list on function pg_logfile_rotate()", "url": "https://www.postgresql.org/support/security/CVE-2018-1115/", "score": 3.1, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N", "description": "", "description_language": "en", "fixed": "9.6.9", "fixed_url": "/docs/compare/?release=9.6.9", "affected": "9.6", "component": "contrib module", "mentions": [{"build": "9.6.9", "version": "9.6.9", "title": "\u79fb\u9664 contrib/adminpack \u7684 pg_logfile_rotate() \u51fd\u6570\u4e0a\u7684\u516c\u5171\u6267\u884c\u6743\u9650", "url": "/docs/compare/?release=9.6.9#9.6.9-18cff896ffec1935"}], "evidence": "branch-matrix"}, {"id": "CVE-2018-10925", "title": "Memory disclosure and missing authorization in INSERT ... ON CONFLICT DO UPDATE.", "url": "https://www.postgresql.org/support/security/CVE-2018-10925/", "score": 7.1, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N", "description": "", "description_language": "en", "fixed": "9.6.10", "fixed_url": "/docs/compare/?release=9.6.10", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.10", "version": "9.6.10", "title": "\u4fee\u590d\u901a\u8fc7\u4e0d\u53ea\u662f SELECT * FROM ... \u7684\u89c6\u56fe\u6267\u884c INSERT ... ON CONFLICT UPDATE \u7684\u95ee\u9898", "url": "/docs/compare/?release=9.6.10#9.6.10-c2753f735acfd244"}], "evidence": "branch-matrix"}, {"id": "CVE-2018-10915", "title": "Certain host connection parameters defeat client-side security defenses", "url": "https://www.postgresql.org/support/security/CVE-2018-10915/", "score": 8.5, "vector": "AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H", "description": "", "description_language": "en", "fixed": "9.6.10", "fixed_url": "/docs/compare/?release=9.6.10", "affected": "9.6", "component": "client", "mentions": [{"build": "9.6.10", "version": "9.6.10", "title": "\u4fee\u590d\u8fde\u63a5\u5c1d\u8bd5\u4e4b\u95f4\u672a\u80fd\u5b8c\u5168\u91cd\u7f6e libpq \u72b6\u6001\u7684\u95ee\u9898", "url": "/docs/compare/?release=9.6.10#9.6.10-b50ee2ad35972b64"}], "evidence": "branch-matrix"}, {"id": "CVE-2018-1058", "title": "Uncontrolled search path element in pg_dump and other client applications", "url": "https://www.postgresql.org/support/security/CVE-2018-1058/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "", "description_language": "en", "fixed": "9.6.8", "fixed_url": "/docs/compare/?release=9.6.8", "affected": "9.6", "component": "client", "mentions": [{"build": "9.6.19", "version": "9.6.19", "title": "\u4f7f contrib \u6a21\u5757\u7684\u5b89\u88c5\u811a\u672c\u66f4\u5b89\u5168", "url": "/docs/compare/?release=9.6.19#9.6.19-781ce435b7e40fa2"}, {"build": "9.6.8", "version": "9.6.8", "title": "\u8bb0\u5f55\u5982\u4f55\u914d\u7f6e\u5b89\u88c5\u548c\u5e94\u7528\u4ee5\u9632\u53d7\u5176\u4ed6\u7528\u6237\u4f9d\u8d56 search_path \u7684\u7279\u6d1b\u4f0a\u6728\u9a6c\u653b\u51fb", "url": "/docs/compare/?release=9.6.8#9.6.8-15416513126c15d4"}, {"build": "9.6.8", "version": "9.6.8", "title": "\u907f\u514d\u5728 pg_dump \u548c\u5176\u4ed6\u5ba2\u6237\u7aef\u7a0b\u5e8f\u4e2d\u4f7f\u7528\u4e0d\u5b89\u5168\u7684 search_path \u8bbe\u7f6e", "url": "/docs/compare/?release=9.6.8#9.6.8-5f3c119a2c06181a"}], "evidence": "branch-matrix"}, {"id": "CVE-2018-1053", "title": "pg_upgrade creates file of sensitive metadata under prevailing umask", "url": "https://www.postgresql.org/support/security/CVE-2018-1053/", "score": 6.7, "vector": "AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H", "description": "", "description_language": "en", "fixed": "9.6.7", "fixed_url": "/docs/compare/?release=9.6.7", "affected": "9.6", "component": "client", "mentions": [{"build": "9.6.7", "version": "9.6.7", "title": "\u786e\u4fdd pg_upgrade \u521b\u5efa\u7684\u6240\u6709\u4e34\u65f6\u6587\u4ef6\u5bf9\u5176\u4ed6\u7528\u6237\u4e0d\u53ef\u8bfb", "url": "/docs/compare/?release=9.6.7#9.6.7-107a7027695be69a"}], "evidence": "branch-matrix"}, {"id": "CVE-2017-7548", "title": "lo_put() function ignores ACLs", "url": "https://www.postgresql.org/support/security/CVE-2017-7548/", "score": 3.1, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N", "description": "", "description_language": "en", "fixed": "9.6.4", "fixed_url": "/docs/compare/?release=9.6.4", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.4", "version": "9.6.4", "title": "\u8ba9 lo_put() \u68c0\u67e5\u5bf9\u76ee\u6807\u5927\u5bf9\u8c61\u7684 UPDATE \u6743\u9650", "url": "/docs/compare/?release=9.6.4#9.6.4-dccc2650968b60e7"}], "evidence": "branch-matrix"}, {"id": "CVE-2017-7547", "title": "pg_user_mappings view discloses passwords to users lacking server privileges", "url": "https://www.postgresql.org/support/security/CVE-2017-7547/", "score": 8.5, "vector": "AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H", "description": "", "description_language": "en", "fixed": "9.6.4", "fixed_url": "/docs/compare/?release=9.6.4", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.4", "version": "9.6.4", "title": "\u8fdb\u4e00\u6b65\u9650\u5236 pg_user_mappings.umoptions \u7684\u53ef\u89c1\u6027\uff0c\u4ee5\u4fdd\u62a4\u5b58\u50a8\u4e3a\u7528\u6237\u6620\u5c04\u9009\u9879\u7684\u5bc6\u7801", "url": "/docs/compare/?release=9.6.4#9.6.4-a79358365b635764"}, {"build": "9.6.3", "version": "9.6.3", "title": "\u9650\u5236 pg_user_mappings.umoptions \u7684\u53ef\u89c1\u6027\uff0c\u4ee5\u4fdd\u62a4\u5b58\u50a8\u4e3a\u7528\u6237\u6620\u5c04\u9009\u9879\u7684\u5bc6\u7801", "url": "/docs/compare/?release=9.6.3#9.6.3-5809bc8bfc640636"}], "evidence": "branch-matrix"}, {"id": "CVE-2017-7546", "title": "empty password accepted in some authentication methods", "url": "https://www.postgresql.org/support/security/CVE-2017-7546/", "score": 8.1, "vector": "AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H", "description": "", "description_language": "en", "fixed": "9.6.4", "fixed_url": "/docs/compare/?release=9.6.4", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.4", "version": "9.6.4", "title": "\u7981\u6b62\u5728\u6240\u6709\u57fa\u4e8e\u5bc6\u7801\u7684\u8ba4\u8bc1\u65b9\u6cd5\u4e2d\u4f7f\u7528\u7a7a\u5bc6\u7801", "url": "/docs/compare/?release=9.6.4#9.6.4-49a2f6860ca3f76c"}], "evidence": "branch-matrix"}, {"id": "CVE-2017-7486", "title": "pg_user_mappings view discloses foreign server passwords", "url": "https://www.postgresql.org/support/security/CVE-2017-7486/", "score": 8.5, "vector": "AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H", "description": "", "description_language": "en", "fixed": "9.6.3", "fixed_url": "/docs/compare/?release=9.6.3", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.4", "version": "9.6.4", "title": "\u8fdb\u4e00\u6b65\u9650\u5236 pg_user_mappings.umoptions \u7684\u53ef\u89c1\u6027\uff0c\u4ee5\u4fdd\u62a4\u5b58\u50a8\u4e3a\u7528\u6237\u6620\u5c04\u9009\u9879\u7684\u5bc6\u7801", "url": "/docs/compare/?release=9.6.4#9.6.4-a79358365b635764"}, {"build": "9.6.3", "version": "9.6.3", "title": "\u9650\u5236 pg_user_mappings.umoptions \u7684\u53ef\u89c1\u6027\uff0c\u4ee5\u4fdd\u62a4\u5b58\u50a8\u4e3a\u7528\u6237\u6620\u5c04\u9009\u9879\u7684\u5bc6\u7801", "url": "/docs/compare/?release=9.6.3#9.6.3-5809bc8bfc640636"}], "evidence": "branch-matrix"}, {"id": "CVE-2017-7485", "title": "libpq ignores PGREQUIRESSL environment variable", "url": "https://www.postgresql.org/support/security/CVE-2017-7485/", "score": 8.1, "vector": "AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H", "description": "", "description_language": "en", "fixed": "9.6.3", "fixed_url": "/docs/compare/?release=9.6.3", "affected": "9.6", "component": "client", "mentions": [{"build": "9.6.3", "version": "9.6.3", "title": "\u6062\u590d libpq \u5bf9 PGREQUIRESSL \u73af\u5883\u53d8\u91cf\u7684\u8bc6\u522b", "url": "/docs/compare/?release=9.6.3#9.6.3-0271632bc8a85d01"}], "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": "", "description_language": "en", "fixed": "9.6.3", "fixed_url": "/docs/compare/?release=9.6.3", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.13", "version": "9.6.13", "title": "\u9632\u6b62\u901a\u8fc7\u9009\u62e9\u7387\u4f30\u8ba1\u5668\u7ed5\u8fc7\u884c\u7ea7\u5b89\u5168\u7b56\u7565", "url": "/docs/compare/?release=9.6.13#9.6.13-35d4445257f1090d"}, {"build": "9.6.3", "version": "9.6.3", "title": "\u9632\u6b62\u901a\u8fc7\u6cc4\u6f0f\u578b\u64cd\u4f5c\u7b26\u66b4\u9732\u7edf\u8ba1\u4fe1\u606f", "url": "/docs/compare/?release=9.6.3#9.6.3-e7d6271f2c62b341"}], "evidence": "branch-matrix"}, {"id": "CVE-2017-15099", "title": "INSERT ... ON CONFLICT DO UPDATE fails to enforce SELECT privileges", "url": "https://www.postgresql.org/support/security/CVE-2017-15099/", "score": 3.1, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N", "description": "", "description_language": "en", "fixed": "9.6.6", "fixed_url": "/docs/compare/?release=9.6.6", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.6", "version": "9.6.6", "title": "\u786e\u4fdd INSERT ... ON CONFLICT DO UPDATE \u5728\u6240\u6709\u60c5\u51b5\u4e0b\u68c0\u67e5\u8868\u6743\u9650\u548c RLS \u7b56\u7565", "url": "/docs/compare/?release=9.6.6#9.6.6-20b5933e24adcaef"}], "evidence": "branch-matrix"}, {"id": "CVE-2017-15098", "title": "Memory disclosure in JSON functions", "url": "https://www.postgresql.org/support/security/CVE-2017-15098/", "score": 4.3, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "description": "", "description_language": "en", "fixed": "9.6.6", "fixed_url": "/docs/compare/?release=9.6.6", "affected": "9.6", "component": "core server", "mentions": [{"build": "9.6.6", "version": "9.6.6", "title": "\u4fee\u590d json{b}_populate_recordset() \u4e2d\u884c\u7c7b\u578b\u4e0d\u5339\u914d\u5bfc\u81f4\u7684\u5d29\u6e83", "url": "/docs/compare/?release=9.6.6#9.6.6-6347e8c17fee8c51"}], "evidence": "branch-matrix"}, {"id": "CVE-2017-12172", "title": "Start scripts permit database administrator to modify root-owned files", "url": "https://www.postgresql.org/support/security/CVE-2017-12172/", "score": 8.4, "vector": "AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:H", "description": "", "description_language": "en", "fixed": "9.6.6", "fixed_url": "/docs/compare/?release=9.6.6", "affected": "9.6", "component": "contrib module", "mentions": [{"build": "9.6.6", "version": "9.6.6", "title": "\u4fee\u590d\u793a\u4f8b\u670d\u52a1\u5668\u542f\u52a8\u811a\u672c\u5728\u6253\u5f00 $PGLOG \u4e4b\u524d\u53d8\u6210 $PGUSER", "url": "/docs/compare/?release=9.6.6#9.6.6-b695ceda5feee1ee"}], "evidence": "branch-matrix"}, {"id": "CVE-2007-2138", "title": "A vulnerability involving insecure search_path settings allows unprivileged users to gain the SQL privileges of the owner of any SECURITY DEFINER function they are allowed to call. Securing such a function requires both a software update and changes to the function definition.", "url": "https://www.postgresql.org/support/security/CVE-2007-2138/", "score": null, "vector": "", "description": "", "description_language": "en", "fixed": "", "fixed_url": "", "affected": "", "component": "", "mentions": [{"build": "9.6.15", "version": "9.6.15", "title": "\u8981\u6c42\u4f7f\u7528\u51fd\u6570\u5f0f\u8f6c\u6362\u8bed\u6cd5\u8f6c\u6362\u5230\u4e34\u65f6\u7c7b\u578b\u65f6\u8fdb\u884c\u6a21\u5f0f\u9650\u5b9a", "url": "/docs/compare/?release=9.6.15#9.6.15-a1ed66934d01ba97"}], "evidence": "release-note-mention"}, {"id": "CVE-2006-2313", "title": "An attacker able to submit crafted strings to an application that will embed those strings in SQL commands can use invalidly-encoded multibyte characters to bypass standard string-escaping methods, resulting in possible SQL injection.", "url": "https://www.postgresql.org/support/security/CVE-2006-2313/", "score": null, "vector": "", "description": "", "description_language": "en", "fixed": "", "fixed_url": "", "affected": "", "component": "", "mentions": [{"build": "9.6.23", "version": "9.6.23", "title": "\u5728 psql \u53ca\u5176\u4ed6\u5ba2\u6237\u7aef\u7a0b\u5e8f\u4e2d\uff0c\u5904\u7406\u975e\u6cd5\u7f16\u7801\u6570\u636e\u65f6\u907f\u514d\u8d8a\u8fc7\u5b57\u7b26\u4e32\u672b\u5c3e", "url": "/docs/compare/?release=9.6.23#9.6.23-9c62820c73bddaa7"}], "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": 13331338, "url": "/files/documentation/pdf/9.6/postgresql-9.6-A4.pdf"}, {"label": "US Letter PDF", "bytes": 13323107, "url": "/files/documentation/pdf/9.6/postgresql-9.6-US.pdf"}], "query": "", "selected_kind": "", "branches": [{"branch": "20", "url": "/wiki/versions/20/", "state": "devel", "state_label": "\u5f00\u53d1\u7248", "tag": "\u5f00\u53d1\u7248", "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:10:20.822721", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}, {"branch": "19", "url": "/wiki/versions/19/", "state": "beta", "state_label": "\u9884\u89c8\u7248", "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:45.258078", "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": "\u5f53\u524d\u7a33\u5b9a\u7248", "tag": "\u5f53\u524d", "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:45.258078", "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": "\u652f\u6301\u4e2d", "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:45.258078", "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": "\u652f\u6301\u4e2d", "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:45.258078", "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": "\u652f\u6301\u4e2d", "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": 1092, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u652f\u6301\u4e2d", "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": 1084, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 1065, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 1058, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 1049, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 1011, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 975, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 959, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 935, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 1199, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 1153, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 1102, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 1024, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 968, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 913, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 785, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 617, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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": 553, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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/index.html", "manual_slug": "7.1", "manual_pages": 489, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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/index.html", "manual_slug": "7.0", "manual_pages": 414, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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/index.html", "manual_slug": "6.5", "manual_pages": 371, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "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/index.html", "manual_slug": "6.4", "manual_pages": 340, "manual_loaded_at": "2026-09-27T00:10:45.258078", "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": "\u5df2\u505c\u6b62\u652f\u6301", "tag": "", "build": "6.3.2", "first_release": "1998-03-01", "end_of_life": "2003-03-01", "latest_release_date": "", "manual_url": "/docs/6.3/index.html", "manual_slug": "6.3", "manual_pages": 202, "manual_loaded_at": "2026-09-27T00:10:45.258078", "source_revision": "", "release_count": 0, "entry_count": 0, "initial": null, "latest": null, "comparison_url": ""}]}