{"format": 1, "version": {"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"}, "releases": [{"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}, {"version": "12.21", "build": "12.21", "status": "stable", "date": "2024-11-14", "source_as_of": "", "url": "/docs/compare/?release=12.21", "manual_url": "/docs/12/release-12-21.html", "source_url": "/docs/release/12.21/", "entry_count": 34, "categories": {"security": 4, "improvement": 19, "bugfix": 11}, "compatibility_count": 0, "cves": ["CVE-2024-10976", "CVE-2024-10977", "CVE-2024-10978", "CVE-2024-10979"], "cve_count": 4}, {"version": "12.20", "build": "12.20", "status": "stable", "date": "2024-08-08", "source_as_of": "", "url": "/docs/compare/?release=12.20", "manual_url": "/docs/12/release-12-20.html", "source_url": "/docs/release/12.20/", "entry_count": 34, "categories": {"security": 2, "bugfix": 16, "improvement": 16}, "compatibility_count": 0, "cves": ["CVE-2023-5869", "CVE-2024-7348"], "cve_count": 2}, {"version": "12.19", "build": "12.19", "status": "stable", "date": "2024-05-09", "source_as_of": "", "url": "/docs/compare/?release=12.19", "manual_url": "/docs/12/release-12-19.html", "source_url": "/docs/release/12.19/", "entry_count": 35, "categories": {"bugfix": 15, "improvement": 20}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"version": "12.18", "build": "12.18", "status": "stable", "date": "2024-02-08", "source_as_of": "", "url": "/docs/compare/?release=12.18", "manual_url": "/docs/12/release-12-18.html", "source_url": "/docs/release/12.18/", "entry_count": 39, "categories": {"security": 1, "bugfix": 14, "improvement": 24}, "compatibility_count": 0, "cves": ["CVE-2024-0985"], "cve_count": 1}, {"version": "12.17", "build": "12.17", "status": "stable", "date": "2023-11-09", "source_as_of": "", "url": "/docs/compare/?release=12.17", "manual_url": "/docs/12/release-12-17.html", "source_url": "/docs/release/12.17/", "entry_count": 43, "categories": {"security": 3, "bugfix": 15, "improvement": 25}, "compatibility_count": 0, "cves": ["CVE-2023-5868", "CVE-2023-5869", "CVE-2023-5870"], "cve_count": 3}, {"version": "12.16", "build": "12.16", "status": "stable", "date": "2023-08-10", "source_as_of": "", "url": "/docs/compare/?release=12.16", "manual_url": "/docs/12/release-12-16.html", "source_url": "/docs/release/12.16/", "entry_count": 32, "categories": {"security": 1, "bugfix": 14, "improvement": 17}, "compatibility_count": 0, "cves": ["CVE-2023-39417"], "cve_count": 1}, {"version": "12.15", "build": "12.15", "status": "stable", "date": "2023-05-11", "source_as_of": "", "url": "/docs/compare/?release=12.15", "manual_url": "/docs/12/release-12-15.html", "source_url": "/docs/release/12.15/", "entry_count": 50, "categories": {"security": 2, "bugfix": 26, "improvement": 22}, "compatibility_count": 0, "cves": ["CVE-2023-2454", "CVE-2023-2455"], "cve_count": 2}, {"version": "12.14", "build": "12.14", "status": "stable", "date": "2023-02-09", "source_as_of": "", "url": "/docs/compare/?release=12.14", "manual_url": "/docs/12/release-12-14.html", "source_url": "/docs/release/12.14/", "entry_count": 36, "categories": {"security": 1, "improvement": 20, "bugfix": 15}, "compatibility_count": 0, "cves": ["CVE-2022-41862"], "cve_count": 1}, {"version": "12.13", "build": "12.13", "status": "stable", "date": "2022-11-10", "source_as_of": "", "url": "/docs/compare/?release=12.13", "manual_url": "/docs/12/release-12-13.html", "source_url": "/docs/release/12.13/", "entry_count": 38, "categories": {"improvement": 19, "bugfix": 19}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"version": "12.12", "build": "12.12", "status": "stable", "date": "2022-08-11", "source_as_of": "", "url": "/docs/compare/?release=12.12", "manual_url": "/docs/12/release-12-12.html", "source_url": "/docs/release/12.12/", "entry_count": 39, "categories": {"security": 2, "bugfix": 15, "improvement": 22}, "compatibility_count": 0, "cves": ["CVE-2022-1552", "CVE-2022-2625"], "cve_count": 2}, {"version": "12.11", "build": "12.11", "status": "stable", "date": "2022-05-12", "source_as_of": "", "url": "/docs/compare/?release=12.11", "manual_url": "/docs/12/release-12-11.html", "source_url": "/docs/release/12.11/", "entry_count": 36, "categories": {"security": 1, "improvement": 17, "bugfix": 18}, "compatibility_count": 0, "cves": ["CVE-2022-1552"], "cve_count": 1}, {"version": "12.10", "build": "12.10", "status": "stable", "date": "2022-02-10", "source_as_of": "", "url": "/docs/compare/?release=12.10", "manual_url": "/docs/12/release-12-10.html", "source_url": "/docs/release/12.10/", "entry_count": 33, "categories": {"improvement": 17, "bugfix": 16}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"version": "12.9", "build": "12.9", "status": "stable", "date": "2021-11-11", "source_as_of": "", "url": "/docs/compare/?release=12.9", "manual_url": "/docs/12/release-12-9.html", "source_url": "/docs/release/12.9/", "entry_count": 63, "categories": {"security": 2, "bugfix": 30, "improvement": 30, "performance": 1}, "compatibility_count": 0, "cves": ["CVE-2021-23214", "CVE-2021-23222"], "cve_count": 2}, {"version": "12.8", "build": "12.8", "status": "stable", "date": "2021-08-12", "source_as_of": "", "url": "/docs/compare/?release=12.8", "manual_url": "/docs/12/release-12-8.html", "source_url": "/docs/release/12.8/", "entry_count": 68, "categories": {"security": 3, "improvement": 41, "bugfix": 23, "performance": 1}, "compatibility_count": 0, "cves": ["CVE-2006-2313", "CVE-2021-3449", "CVE-2021-3677"], "cve_count": 3}, {"version": "12.7", "build": "12.7", "status": "stable", "date": "2021-05-13", "source_as_of": "", "url": "/docs/compare/?release=12.7", "manual_url": "/docs/12/release-12-7.html", "source_url": "/docs/release/12.7/", "entry_count": 41, "categories": {"security": 3, "bugfix": 23, "improvement": 15}, "compatibility_count": 0, "cves": ["CVE-2021-32027", "CVE-2021-32028", "CVE-2021-32029"], "cve_count": 3}, {"version": "12.6", "build": "12.6", "status": "stable", "date": "2021-02-11", "source_as_of": "", "url": "/docs/compare/?release=12.6", "manual_url": "/docs/12/release-12-6.html", "source_url": "/docs/release/12.6/", "entry_count": 67, "categories": {"security": 1, "bugfix": 33, "improvement": 33}, "compatibility_count": 0, "cves": ["CVE-2021-3393"], "cve_count": 1}, {"version": "12.5", "build": "12.5", "status": "stable", "date": "2020-11-12", "source_as_of": "", "url": "/docs/compare/?release=12.5", "manual_url": "/docs/12/release-12-5.html", "source_url": "/docs/release/12.5/", "entry_count": 58, "categories": {"security": 4, "improvement": 30, "bugfix": 24}, "compatibility_count": 0, "cves": ["CVE-2020-25694", "CVE-2020-25695", "CVE-2020-25696"], "cve_count": 3}, {"version": "12.4", "build": "12.4", "status": "stable", "date": "2020-08-13", "source_as_of": "", "url": "/docs/compare/?release=12.4", "manual_url": "/docs/12/release-12-4.html", "source_url": "/docs/release/12.4/", "entry_count": 52, "categories": {"security": 2, "bugfix": 27, "improvement": 23}, "compatibility_count": 0, "cves": ["CVE-2018-1058", "CVE-2020-14349", "CVE-2020-14350"], "cve_count": 3}, {"version": "12.3", "build": "12.3", "status": "stable", "date": "2020-05-14", "source_as_of": "", "url": "/docs/compare/?release=12.3", "manual_url": "/docs/12/release-12-3.html", "source_url": "/docs/release/12.3/", "entry_count": 76, "categories": {"bugfix": 31, "improvement": 45}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"version": "12.2", "build": "12.2", "status": "stable", "date": "2020-02-13", "source_as_of": "", "url": "/docs/compare/?release=12.2", "manual_url": "/docs/12/release-12-2.html", "source_url": "/docs/release/12.2/", "entry_count": 75, "categories": {"security": 2, "bugfix": 44, "improvement": 28, "performance": 1}, "compatibility_count": 0, "cves": ["CVE-2017-7484", "CVE-2020-1720"], "cve_count": 2}, {"version": "12.1", "build": "12.1", "status": "stable", "date": "2019-11-14", "source_as_of": "", "url": "/docs/compare/?release=12.1", "manual_url": "/docs/12/release-12-1.html", "source_url": "/docs/release/12.1/", "entry_count": 51, "categories": {"bugfix": 24, "improvement": 27}, "compatibility_count": 0, "cves": [], "cve_count": 0}, {"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}], "initial_entries": [{"id": "12.0-b3154fc397f8627e", "cves": [], "html": "<p>\u79fb\u9664 <a href=\"/docs/12/datatype-oid.html\" title=\"8.19.\u00a0\u5bf9\u8c61\u6807\u8bc6\u7b26\u7c7b\u578b\">oid</a> \u5217\u7684\u7279\u6b8a\u884c\u4e3a\uff08Andres Freund\uff0cJohn Naylor\uff09<a href=\"https://postgr.es/c/578b22971\">\u00a7</a></p>\n<p>\u4ee5\u524d\uff0c\u53ef\u4ee5\u5728\u5efa\u8868\u65f6\u4f7f\u7528 <code>WITH OIDS</code> \u6307\u5b9a\u4e00\u4e2a\u901a\u5e38\u4e0d\u53ef\u89c1\u7684 <code>oid</code> \u5217\uff1b\u6b64\u529f\u80fd\u5df2\u88ab\u79fb\u9664\u3002\u4ecd\u53ef\u5c06\u5217\u663e\u5f0f\u58f0\u660e\u4e3a <code>oid</code> \u7c7b\u578b\u3002\u5bf9\u4e8e\u5305\u542b\u4f7f\u7528 <code>WITH OIDS</code> \u521b\u5efa\u7684\u5217\u7684\u8868\uff0c\u5176\u76f8\u5173\u64cd\u4f5c\u9700\u8981\u4f5c\u51fa\u8c03\u6574\u3002</p>\n<p>\u4ee5\u524d\u5e26\u6709\u9690\u85cf <code>oid</code> \u5217\u7684\u7cfb\u7edf\u76ee\u5f55\uff0c\u73b0\u5728\u6539\u4e3a\u5177\u6709\u666e\u901a\u7684 <code>oid</code> \u5217\u3002\u56e0\u6b64\uff0c<code>SELECT *</code> \u73b0\u5728\u4f1a\u8f93\u51fa\u8fd9\u4e9b\u5217\uff0c\u800c\u4ee5\u524d\u53ea\u6709\u663e\u5f0f\u9009\u62e9\u65f6\u624d\u4f1a\u663e\u793a\u5b83\u4eec\u3002</p>", "text": "\u79fb\u9664 oid \u5217\u7684\u7279\u6b8a\u884c\u4e3a\uff08Andres Freund\uff0cJohn Naylor\uff09\u00a7 \u4ee5\u524d\uff0c\u53ef\u4ee5\u5728\u5efa\u8868\u65f6\u4f7f\u7528 WITH OIDS \u6307\u5b9a\u4e00\u4e2a\u901a\u5e38\u4e0d\u53ef\u89c1\u7684 oid \u5217\uff1b\u6b64\u529f\u80fd\u5df2\u88ab\u79fb\u9664\u3002\u4ecd\u53ef\u5c06\u5217\u663e\u5f0f\u58f0\u660e\u4e3a oid \u7c7b\u578b\u3002\u5bf9\u4e8e\u5305\u542b\u4f7f\u7528 WITH OIDS \u521b\u5efa\u7684\u5217\u7684\u8868\uff0c\u5176\u76f8\u5173\u64cd\u4f5c\u9700\u8981\u4f5c\u51fa\u8c03\u6574\u3002 \u4ee5\u524d\u5e26\u6709\u9690\u85cf oid \u5217\u7684\u7cfb\u7edf\u76ee\u5f55\uff0c\u73b0\u5728\u6539\u4e3a\u5177\u6709\u666e\u901a\u7684 oid \u5217\u3002\u56e0\u6b64\uff0cSELECT * \u73b0\u5728\u4f1a\u8f93\u51fa\u8fd9\u4e9b\u5217\uff0c\u800c\u4ee5\u524d\u53ea\u6709\u663e\u5f0f\u9009\u62e9\u65f6\u624d\u4f1a\u663e\u793a\u5b83\u4eec\u3002", "title": "\u79fb\u9664 oid \u5217\u7684\u7279\u6b8a\u884c\u4e3a", "commits": ["578b22971"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "d885c7f2f761579d697ddeeda1215c49d2a08b33cc6b4612d9aa7807a758c675", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["578b22971"]], "identity_text": "Remove the special behavior of oid columns (Andres Freund, John Naylor) Previously, a normally-invisible oid column could be specified during table creation using WITH OIDS; that ability has been removed. Columns can still be explicitly declared as type oid. Operations on tables that have columns created using WITH OIDS will need adjustment. The system catalogs that previously had hidden oid columns now have ordinary oid columns. Hence, SELECT * will now output those columns, whereas previously they would be displayed only if selected explicitly.", "commit_aliases": ["578b22971"], "source_commits": ["578b22971"], "source_entry_id": "12.0/migration/001", "db_id": "86c829ebf46113377e02d2f066c9a2bc", "patch_ids": ["62f653cedb047b3630b5b981b7b2e34d"], "statement_hash": "9f41780074672a9eaddc69a25fff728cae10ec9d03f1a9693c2192d9c3b03e30", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-b3154fc397f8627e", "migration": true}, {"id": "12.0-4174a02156f3d149", "cves": [], "html": "<p>\u79fb\u9664\u6570\u636e\u7c7b\u578b <code>abstime</code>\u3001<code>reltime</code> \u548c <code>tinterval</code>\uff08Andres Freund\uff09<a href=\"https://postgr.es/c/cda6a8d01\">\u00a7</a></p>\n<p>\u8fd9\u4e9b\u7c7b\u578b\u5df2\u88ab <code>timestamp</code> \u7b49 SQL \u6807\u51c6\u7c7b\u578b\u53d6\u4ee3\u3002</p>", "text": "\u79fb\u9664\u6570\u636e\u7c7b\u578b abstime\u3001reltime \u548c tinterval\uff08Andres Freund\uff09\u00a7 \u8fd9\u4e9b\u7c7b\u578b\u5df2\u88ab timestamp \u7b49 SQL \u6807\u51c6\u7c7b\u578b\u53d6\u4ee3\u3002", "title": "\u79fb\u9664\u6570\u636e\u7c7b\u578b abstime\u3001reltime \u548c tinterval", "commits": ["cda6a8d01"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "91f48b15f729cd636b9be8a855751feea0f8e0c5a54c8cb68013b1cf1599eae0", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["cda6a8d01"]], "identity_text": "Remove data types abstime, reltime, and tinterval (Andres Freund) These are obsoleted by SQL-standard types such as timestamp.", "commit_aliases": ["cda6a8d01"], "source_commits": ["cda6a8d01"], "source_entry_id": "12.0/migration/002", "db_id": "4a8ea153ee93838ba3420a13ea6a1041", "patch_ids": ["98117a27e3960f88a0b9376067cf43a1"], "statement_hash": "28d9e88c28e29e8d995afe32443d49cf365508c2ce12f88ff4988cf9a823440a", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-4174a02156f3d149", "migration": true}, {"id": "12.0-eade940789a68f86", "cves": [], "html": "<p>\u79fb\u9664 <code>timetravel</code> \u6269\u5c55\uff08Andres Freund\uff09<a href=\"https://postgr.es/c/2d10defa7\">\u00a7</a></p>", "text": "\u79fb\u9664 timetravel \u6269\u5c55\uff08Andres Freund\uff09\u00a7", "title": "\u79fb\u9664 timetravel \u6269\u5c55", "commits": ["2d10defa7"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "9589d629e73d43a4541e23b7fbd8dabbcf6ba56c09ba6ac2ca7f06d0723ff133", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["2d10defa7"]], "identity_text": "Remove the timetravel extension (Andres Freund)", "commit_aliases": ["2d10defa7"], "source_commits": ["2d10defa7"], "source_entry_id": "12.0/migration/003", "db_id": "e4044b5877fc0edf00eeabbfd6d84ae7", "patch_ids": ["f4cba750b334d547952da9615d68cadf"], "statement_hash": "762e827938fe6af07f67ddbbf3392d32312ece27df9140aec44e285d7ec00738", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-eade940789a68f86", "migration": true}, {"id": "12.0-ad7ab326d195305c", "cves": [], "html": "<p>\u5c06 <code>recovery.conf</code> \u8bbe\u7f6e\u79fb\u5165 <a href=\"/docs/12/runtime-config-wal.html#RUNTIME-CONFIG-WAL-ARCHIVE-RECOVERY\" title=\"19.5.4.\u00a0\u5f52\u6863\u6062\u590d\"><code>postgresql.conf</code></a>\uff08Masao Fujii\uff0cSimon Riggs\uff0cAbhijit Menon-Sen\uff0cSergei Kornilov\uff09<a href=\"https://postgr.es/c/2dedf4d9a\">\u00a7</a></p>\n<p>\u4e0d\u518d\u4f7f\u7528 <code>recovery.conf</code>\uff0c\u5982\u679c\u8be5\u6587\u4ef6\u5b58\u5728\uff0c\u670d\u52a1\u5668\u5c06\u65e0\u6cd5\u542f\u52a8\u3002\u73b0\u5728\u901a\u8fc7 <a href=\"/docs/12/runtime-config-wal.html#RUNTIME-CONFIG-WAL-ARCHIVE-RECOVERY\" title=\"19.5.4.\u00a0\u5f52\u6863\u6062\u590d\">recovery.signal</a> \u548c <code>standby.signal</code> \u6587\u4ef6\u5207\u6362\u5230\u975e\u4e3b\u5e93\u6a21\u5f0f\u3002<code>trigger_file</code> \u8bbe\u7f6e\u5df2\u91cd\u547d\u540d\u4e3a<a href=\"/docs/12/runtime-config-replication.html#GUC-PROMOTE-TRIGGER-FILE\">promote_trigger_file</a>\u3002<code>standby_mode</code> \u8bbe\u7f6e\u5df2\u88ab\u79fb\u9664\u3002</p>", "text": "\u5c06 recovery.conf \u8bbe\u7f6e\u79fb\u5165 postgresql.conf\uff08Masao Fujii\uff0cSimon Riggs\uff0cAbhijit Menon-Sen\uff0cSergei Kornilov\uff09\u00a7 \u4e0d\u518d\u4f7f\u7528 recovery.conf\uff0c\u5982\u679c\u8be5\u6587\u4ef6\u5b58\u5728\uff0c\u670d\u52a1\u5668\u5c06\u65e0\u6cd5\u542f\u52a8\u3002\u73b0\u5728\u901a\u8fc7 recovery.signal \u548c standby.signal \u6587\u4ef6\u5207\u6362\u5230\u975e\u4e3b\u5e93\u6a21\u5f0f\u3002trigger_file \u8bbe\u7f6e\u5df2\u91cd\u547d\u540d\u4e3apromote_trigger_file\u3002standby_mode \u8bbe\u7f6e\u5df2\u88ab\u79fb\u9664\u3002", "title": "\u5c06 recovery.conf \u8bbe\u7f6e\u79fb\u5165 postgresql.conf", "commits": ["2dedf4d9a"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "d994a89e801ddd8b5fea9f19c9cd9a124cea18f7d945046bb3b70fe57d97969c", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["2dedf4d9a"]], "identity_text": "Move recovery.conf settings into postgresql.conf (Masao Fujii, Simon Riggs, Abhijit Menon-Sen, Sergei Kornilov) recovery.conf is no longer used, and the server will not start if that file exists. recovery.signal and standby.signal files are now used to switch into non-primary mode. The trigger_file setting has been renamed to guc-promote-trigger-file . The standby_mode setting has been removed.", "commit_aliases": ["2dedf4d9a"], "source_commits": ["2dedf4d9a"], "source_entry_id": "12.0/migration/004", "db_id": "268bbb07fedcd3adaf551feca6d32b19", "patch_ids": ["2a085e19ed64d55d8771f66b3a15c3ef"], "statement_hash": "350f2a5e68593a4c5c60852b553bc32ebf557f91176567ace3250da11de11bad", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-ad7ab326d195305c", "migration": true}, {"id": "12.0-0d313d7d81a8ac70", "cves": [], "html": "<p>\u4e0d\u518d\u5141\u8bb8\u6307\u5b9a\u591a\u4e2a\u76f8\u4e92\u51b2\u7a81\u7684 <a href=\"/docs/12/runtime-config-wal.html#RUNTIME-CONFIG-WAL-RECOVERY-TARGET\" title=\"19.5.5.\u00a0\u6062\u590d\u76ee\u6807\"><code>recovery_target</code>*</a> \u8bbe\u7f6e\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/f2cbffc7a\">\u00a7</a></p>\n<p>\u5177\u4f53\u800c\u8a00\uff0c<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET\">recovery_target</a>\u3001<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET-LSN\">recovery_target_lsn</a>\u3001<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET-NAME\">recovery_target_name</a>\u3001<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET-TIME\">recovery_target_time</a>\u548c<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET-XID\">recovery_target_xid</a>\u4e2d\u53ea\u5141\u8bb8\u6307\u5b9a\u4e00\u4e2a\u3002\u4ee5\u524d\u53ef\u4ee5\u6307\u5b9a\u8fd9\u4e9b\u53c2\u6570\u4e2d\u7684\u591a\u4e2a\u4e0d\u540c\u53c2\u6570\uff0c\u5e76\u91c7\u7528\u6700\u540e\u4e00\u4e2a\u3002\u73b0\u5728\u53ea\u80fd\u6307\u5b9a\u5176\u4e2d\u4e00\u4e2a\uff0c\u4f46\u540c\u4e00\u4e2a\u53c2\u6570\u53ef\u4ee5\u91cd\u590d\u6307\u5b9a\uff0c\u5e76\u91c7\u7528\u6700\u540e\u4e00\u6b21\u6307\u5b9a\u7684\u503c\u3002</p>", "text": "\u4e0d\u518d\u5141\u8bb8\u6307\u5b9a\u591a\u4e2a\u76f8\u4e92\u51b2\u7a81\u7684 recovery_target* \u8bbe\u7f6e\uff08Peter Eisentraut\uff09\u00a7 \u5177\u4f53\u800c\u8a00\uff0crecovery_target\u3001recovery_target_lsn\u3001recovery_target_name\u3001recovery_target_time\u548crecovery_target_xid\u4e2d\u53ea\u5141\u8bb8\u6307\u5b9a\u4e00\u4e2a\u3002\u4ee5\u524d\u53ef\u4ee5\u6307\u5b9a\u8fd9\u4e9b\u53c2\u6570\u4e2d\u7684\u591a\u4e2a\u4e0d\u540c\u53c2\u6570\uff0c\u5e76\u91c7\u7528\u6700\u540e\u4e00\u4e2a\u3002\u73b0\u5728\u53ea\u80fd\u6307\u5b9a\u5176\u4e2d\u4e00\u4e2a\uff0c\u4f46\u540c\u4e00\u4e2a\u53c2\u6570\u53ef\u4ee5\u91cd\u590d\u6307\u5b9a\uff0c\u5e76\u91c7\u7528\u6700\u540e\u4e00\u6b21\u6307\u5b9a\u7684\u503c\u3002", "title": "\u4e0d\u518d\u5141\u8bb8\u6307\u5b9a\u591a\u4e2a\u76f8\u4e92\u51b2\u7a81\u7684 recovery_target* \u8bbe\u7f6e", "commits": ["f2cbffc7a"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "fad2d6a2ad9f324e20ef3ac8d91c870684fee613526ec2ced1a845c19a3db4e5", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["f2cbffc7a"]], "identity_text": "Do not allow multiple conflicting recovery_target* specifications (Peter Eisentraut) Specifically, only allow one of guc-recovery-target , guc-recovery-target-lsn , guc-recovery-target-name , guc-recovery-target-time , and guc-recovery-target-xid . Previously, multiple different instances of these parameters could be specified, and the last one was honored. Now, only one can be specified, though the same one can be specified multiple times and the last specification is honored.", "commit_aliases": ["f2cbffc7a"], "source_commits": ["f2cbffc7a"], "source_entry_id": "12.0/migration/005", "db_id": "86c144405f8c41cd8b0a9caca14a0400", "patch_ids": ["9b1295b2da67a371becbd16e0536209e"], "statement_hash": "44d748fa1ce3e82a41012868460e0f33f0e495a9a6ba707671a4969841b3f51f", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-0d313d7d81a8ac70", "migration": true}, {"id": "12.0-7958e5d19551bf1a", "cves": [], "html": "<p>\u4f7f\u6062\u590d\u9ed8\u8ba4\u63a8\u8fdb\u5230\u6700\u65b0\u65f6\u95f4\u7ebf\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/0acb3bc33\">\u00a7</a></p>\n<p>\u5177\u4f53\u800c\u8a00\uff0c<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET-TIMELINE\">recovery_target_timeline</a>\u73b0\u5728\u9ed8\u8ba4\u4e3a <code>latest</code>\uff0c\u800c\u4ee5\u524d\u9ed8\u8ba4\u4e3a <code>current</code>\u3002</p>", "text": "\u4f7f\u6062\u590d\u9ed8\u8ba4\u63a8\u8fdb\u5230\u6700\u65b0\u65f6\u95f4\u7ebf\uff08Peter Eisentraut\uff09\u00a7 \u5177\u4f53\u800c\u8a00\uff0crecovery_target_timeline\u73b0\u5728\u9ed8\u8ba4\u4e3a latest\uff0c\u800c\u4ee5\u524d\u9ed8\u8ba4\u4e3a current\u3002", "title": "\u4f7f\u6062\u590d\u9ed8\u8ba4\u63a8\u8fdb\u5230\u6700\u65b0\u65f6\u95f4\u7ebf", "commits": ["0acb3bc33"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "6774794a02a160d06d9ccbaf1e17d64d6bcde2f4169032f6bba63024df01862b", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["0acb3bc33"]], "identity_text": "Cause recovery to advance to the latest timeline by default (Peter Eisentraut) Specifically, guc-recovery-target-timeline now defaults to latest. Previously, it defaulted to current.", "commit_aliases": ["0acb3bc33"], "source_commits": ["0acb3bc33"], "source_entry_id": "12.0/migration/006", "db_id": "87b55669e87debc273d32594f0ff0a52", "patch_ids": ["656e1151b9a9c46c453ea08e55522e84"], "statement_hash": "f1aa2b4792c3453a80138f6928659f0adc302dc2854f5b5ebd5801993462f1d1", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-7958e5d19551bf1a", "migration": true}, {"id": "12.0-fafce29314664030", "cves": [], "html": "<p>\u91cd\u6784<a href=\"/docs/12/functions-geometry.html\" title=\"9.11.\u00a0\u51e0\u4f55\u51fd\u6570\u548c\u64cd\u4f5c\u7b26\">\u51e0\u4f55\u51fd\u6570\u548c\u64cd\u4f5c\u7b26</a>\u7684\u4ee3\u7801\uff08Emre Hasegeli\uff09<a href=\"https://postgr.es/c/a7dc63d90\">\u00a7</a> <a href=\"https://postgr.es/c/c4c340088\">\u00a7</a> <a href=\"https://postgr.es/c/2e2a392de\">\u00a7</a></p>\n<p>\u8fd9\u53ef\u80fd\u4ea7\u751f\u6bd4\u4ee5\u524d\u7248\u672c\u66f4\u7cbe\u786e\u4f46\u7565\u6709\u4e0d\u540c\u7684\u7ed3\u679c\u3002\u7279\u522b\u662f\uff0c\u6d89\u53ca NaN\u3001\u4e0b\u6ea2\u3001\u6ea2\u51fa\u548c\u9664\u4ee5\u96f6\u7684\u60c5\u51b5\u73b0\u5728\u5f97\u5230\u6bd4\u4ee5\u524d\u66f4\u4e00\u81f4\u7684\u5904\u7406\u3002</p>", "text": "\u91cd\u6784\u51e0\u4f55\u51fd\u6570\u548c\u64cd\u4f5c\u7b26\u7684\u4ee3\u7801\uff08Emre Hasegeli\uff09\u00a7 \u00a7 \u00a7 \u8fd9\u53ef\u80fd\u4ea7\u751f\u6bd4\u4ee5\u524d\u7248\u672c\u66f4\u7cbe\u786e\u4f46\u7565\u6709\u4e0d\u540c\u7684\u7ed3\u679c\u3002\u7279\u522b\u662f\uff0c\u6d89\u53ca NaN\u3001\u4e0b\u6ea2\u3001\u6ea2\u51fa\u548c\u9664\u4ee5\u96f6\u7684\u60c5\u51b5\u73b0\u5728\u5f97\u5230\u6bd4\u4ee5\u524d\u66f4\u4e00\u81f4\u7684\u5904\u7406\u3002", "title": "\u91cd\u6784\u51e0\u4f55\u51fd\u6570\u548c\u64cd\u4f5c\u7b26\u7684\u4ee3\u7801", "commits": ["2e2a392de", "a7dc63d90", "c4c340088"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "b1ca0eae846b8380319be35e6655c93e12bf0475cf7c27685404868c7b23d78a", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["2e2a392de"], ["a7dc63d90"], ["c4c340088"]], "identity_text": "Refactor code for geometric functions and operators (Emre Hasegeli) This could lead to more accurate, but slightly different, results compared to previous releases. Notably, cases involving NaN, underflow, overflow, and division by zero are handled more consistently than before.", "commit_aliases": ["2e2a392de", "a7dc63d90", "c4c340088"], "source_commits": ["2e2a392de", "a7dc63d90", "c4c340088"], "source_entry_id": "12.0/migration/007", "db_id": "01d2a7a76e1c8c7e81512a30209a2adc", "patch_ids": ["4b08607cab81347ded8c176477ecd212", "7e4cc49893c3728a5da3858fa7cbe3a0", "f9735f476c008bf5007f44787426e3c8"], "statement_hash": "620f296b2f6a12b9a7fc195445bc003cb0098deefbafe17084a073eb9f58f0b6", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-fafce29314664030", "migration": true}, {"id": "12.0-52ca837d7c13aad9", "cves": [], "html": "<p>\u91c7\u7528\u65b0\u7b97\u6cd5\u8f93\u51fa <a href=\"/docs/12/datatype.html#DATATYPE-FLOAT\" title=\"8.1.3.\u00a0\u6d6e\u70b9\u7c7b\u578b\"><code>real</code></a> \u548c <code>double precision</code> \u503c\uff0c\u4ee5\u63d0\u9ad8\u6027\u80fd\uff08Andrew Gierth\uff09<a href=\"https://postgr.es/c/02ddd4993\">\u00a7</a> <a href=\"https://postgr.es/c/f1885386f\">\u00a7</a></p>\n<p>\u4ee5\u524d\uff0c\u663e\u793a\u7684\u6d6e\u70b9\u503c\u9ed8\u8ba4\u820d\u5165\u5230 6 \u4f4d\uff08<code>real</code>\uff09\u6216 15 \u4f4d\uff08<code>double precision</code>\uff09\uff0c\u5e76\u6839\u636e<a href=\"/docs/12/runtime-config-client.html#GUC-EXTRA-FLOAT-DIGITS\">extra_float_digits</a>\u7684\u503c\u8fdb\u884c\u8c03\u6574\u3002\u73b0\u5728\uff0c\u53ea\u8981 <code>extra_float_digits</code> \u5927\u4e8e\u96f6\uff08\u8fd9\u4e5f\u662f\u73b0\u5728\u7684\u9ed8\u8ba4\u503c\uff09\uff0c\u5c31\u53ea\u8f93\u51fa\u4fdd\u7559\u7cbe\u786e\u4e8c\u8fdb\u5236\u503c\u6240\u9700\u7684\u6700\u5c11\u4f4d\u6570\u3002\u5f53 <code>extra_float_digits</code> \u8bbe\u7f6e\u4e3a\u96f6\u6216\u66f4\u5c0f\u65f6\uff0c\u884c\u4e3a\u4e0e\u4ee5\u524d\u76f8\u540c\u3002</p>\n<p>\u6b64\u5916\uff0c\u6d6e\u70b9\u6307\u6570\u7684\u683c\u5f0f\u73b0\u5728\u5728\u5404\u5e73\u53f0\u4e0a\u4e00\u81f4\uff1a\u9664\u975e\u5fc5\u987b\u4f7f\u7528\u4e09\u4f4d\u6570\u5b57\uff0c\u5426\u5219\u4f7f\u7528\u4e24\u4f4d\u3002\u5728\u4ee5\u524d\u7684\u7248\u672c\u4e2d\uff0cWindows \u6784\u5efa\u59cb\u7ec8\u8f93\u51fa\u4e09\u4f4d\u6570\u5b57\u3002</p>", "text": "\u91c7\u7528\u65b0\u7b97\u6cd5\u8f93\u51fa real \u548c double precision \u503c\uff0c\u4ee5\u63d0\u9ad8\u6027\u80fd\uff08Andrew Gierth\uff09\u00a7 \u00a7 \u4ee5\u524d\uff0c\u663e\u793a\u7684\u6d6e\u70b9\u503c\u9ed8\u8ba4\u820d\u5165\u5230 6 \u4f4d\uff08real\uff09\u6216 15 \u4f4d\uff08double precision\uff09\uff0c\u5e76\u6839\u636eextra_float_digits\u7684\u503c\u8fdb\u884c\u8c03\u6574\u3002\u73b0\u5728\uff0c\u53ea\u8981 extra_float_digits \u5927\u4e8e\u96f6\uff08\u8fd9\u4e5f\u662f\u73b0\u5728\u7684\u9ed8\u8ba4\u503c\uff09\uff0c\u5c31\u53ea\u8f93\u51fa\u4fdd\u7559\u7cbe\u786e\u4e8c\u8fdb\u5236\u503c\u6240\u9700\u7684\u6700\u5c11\u4f4d\u6570\u3002\u5f53 extra_float_digits \u8bbe\u7f6e\u4e3a\u96f6\u6216\u66f4\u5c0f\u65f6\uff0c\u884c\u4e3a\u4e0e\u4ee5\u524d\u76f8\u540c\u3002 \u6b64\u5916\uff0c\u6d6e\u70b9\u6307\u6570\u7684\u683c\u5f0f\u73b0\u5728\u5728\u5404\u5e73\u53f0\u4e0a\u4e00\u81f4\uff1a\u9664\u975e\u5fc5\u987b\u4f7f\u7528\u4e09\u4f4d\u6570\u5b57\uff0c\u5426\u5219\u4f7f\u7528\u4e24\u4f4d\u3002\u5728\u4ee5\u524d\u7684\u7248\u672c\u4e2d\uff0cWindows \u6784\u5efa\u59cb\u7ec8\u8f93\u51fa\u4e09\u4f4d\u6570\u5b57\u3002", "title": "\u91c7\u7528\u65b0\u7b97\u6cd5\u8f93\u51fa real \u548c double precision \u503c\uff0c\u4ee5\u63d0\u9ad8\u6027\u80fd", "commits": ["02ddd4993", "f1885386f"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "dab0a1b0cc48b9a5bf410d249a5497f93e9bef45faacf7f49e44fd9b222ab196", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["02ddd4993"], ["f1885386f"]], "identity_text": "Improve performance by using a new algorithm for output of real and double precision values (Andrew Gierth) Previously, displayed floating-point values were rounded to 6 (for real) or 15 (for double precision) digits by default, adjusted by the value of guc-extra-float-digits . Now, whenever extra_float_digits is more than zero (as it now is by default), only the minimum number of digits required to preserve the exact binary value are output. The behavior is the same as before when extra_float_digits is set to zero or less. Also, formatting of floating-point exponents is now uniform across platforms: two digits are used unless three are necessary. In previous releases, Windows builds always printed three digits.", "commit_aliases": ["02ddd4993", "f1885386f"], "source_commits": ["02ddd4993", "f1885386f"], "source_entry_id": "12.0/migration/008", "db_id": "bfbe67b81c03b40560f30245ff680049", "patch_ids": ["4c6aa50270eed3114a78085b39bc9f31", "7e14126e5c64583e0fabbeac1ac3d4f5"], "statement_hash": "e78a41ca94a6779e9557c0c1add6dffda635aad95aac66bb84ba32c46664500c", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-52ca837d7c13aad9", "migration": true}, {"id": "12.0-eacf18ab586153a7", "cves": [], "html": "<p><a href=\"/docs/12/functions-math.html#FUNCTIONS-MATH-RANDOM-TABLE\" title=\"\u8868\u00a09.6.\u00a0\u968f\u673a\u51fd\u6570\"><code>random()</code></a> \u548c <code>setseed()</code> \u73b0\u5728\u5728\u5404\u5e73\u53f0\u4e0a\u884c\u4e3a\u4e00\u81f4\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/6645ad6bd\">\u00a7</a> <a href=\"https://postgr.es/c/4203842a1\">\u00a7</a></p>\n<p>\u4f7f\u7528\u7279\u5b9a\u79cd\u5b50\u503c\u8c03\u7528 <code>setseed()</code> \u540e\u751f\u6210\u7684 <code>random()</code> \u503c\u5e8f\u5217\uff0c\u73b0\u5728\u53ef\u80fd\u4e0e\u4ee5\u524d\u4e0d\u540c\u3002\u4e0d\u8fc7\uff0c\u8be5\u5e8f\u5217\u4e5f\u5c06\u662f\u53ef\u91cd\u590d\u7684\uff1b\u4ee5\u524d\u7531\u4e8e\u670d\u52a1\u5668\u5185\u90e8\u5176\u4ed6\u968f\u673a\u6570\u7528\u9014\u7684\u5e72\u6270\uff0c\u65e0\u6cd5\u4fdd\u8bc1\u8fd9\u4e00\u70b9\u3002SQL <code>random()</code> \u51fd\u6570\u73b0\u5728\u5177\u6709\u6bcf\u4e2a\u4f1a\u8bdd\u72ec\u7acb\u7684\u79c1\u6709\u72b6\u6001\uff0c\u4ee5\u9632\u6b62\u8fd9\u79cd\u5e72\u6270\u3002</p>", "text": "random() \u548c setseed() \u73b0\u5728\u5728\u5404\u5e73\u53f0\u4e0a\u884c\u4e3a\u4e00\u81f4\uff08Tom Lane\uff09\u00a7 \u00a7 \u4f7f\u7528\u7279\u5b9a\u79cd\u5b50\u503c\u8c03\u7528 setseed() \u540e\u751f\u6210\u7684 random() \u503c\u5e8f\u5217\uff0c\u73b0\u5728\u53ef\u80fd\u4e0e\u4ee5\u524d\u4e0d\u540c\u3002\u4e0d\u8fc7\uff0c\u8be5\u5e8f\u5217\u4e5f\u5c06\u662f\u53ef\u91cd\u590d\u7684\uff1b\u4ee5\u524d\u7531\u4e8e\u670d\u52a1\u5668\u5185\u90e8\u5176\u4ed6\u968f\u673a\u6570\u7528\u9014\u7684\u5e72\u6270\uff0c\u65e0\u6cd5\u4fdd\u8bc1\u8fd9\u4e00\u70b9\u3002SQL random() \u51fd\u6570\u73b0\u5728\u5177\u6709\u6bcf\u4e2a\u4f1a\u8bdd\u72ec\u7acb\u7684\u79c1\u6709\u72b6\u6001\uff0c\u4ee5\u9632\u6b62\u8fd9\u79cd\u5e72\u6270\u3002", "title": "random() \u548c setseed() \u73b0\u5728\u5728\u5404\u5e73\u53f0\u4e0a\u884c\u4e3a\u4e00\u81f4", "commits": ["4203842a1", "6645ad6bd"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "1ca8358d0d50435682ed3185971962b543181d7e0a048dfb1695aad6f8b48f84", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["4203842a1"], ["6645ad6bd"]], "identity_text": "random() and setseed() now behave uniformly across platforms (Tom Lane) The sequence of random() values generated following a setseed() call with a particular seed value is likely to be different now than before. However, it will also be repeatable, which was not previously guaranteed because of interference from other uses of random numbers inside the server. The SQL random() function now has its own private per-session state to forestall that.", "commit_aliases": ["4203842a1", "6645ad6bd"], "source_commits": ["4203842a1", "6645ad6bd"], "source_entry_id": "12.0/migration/009", "db_id": "e08eaa052f3497367bf4acc3b896fb88", "patch_ids": ["4885a23732ca5cab89335bef8aab044b", "cae0fae702e4cd2288f289e0a928ab18"], "statement_hash": "ea576a0171070b3d823702d725dab1a106662db17c940f53a0c21d005eb075cb", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-eacf18ab586153a7", "migration": true}, {"id": "12.0-22d94d76d1c6dd97", "cves": [], "html": "<p>\u66f4\u6539 SQL \u98ce\u683c\u7684 <a href=\"/docs/12/functions-matching.html#FUNCTIONS-SIMILARTO-REGEXP\" title=\"9.7.2.\u00a0SIMILAR TO\u6b63\u5219\u8868\u8fbe\u5f0f\"><code>substring()</code></a>\uff0c\u4f7f\u5176\u5177\u6709\u7b26\u5408\u6807\u51c6\u7684\u8d2a\u5a6a\u5339\u914d\u884c\u4e3a\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/7c850320d\">\u00a7</a></p>\n<p>\u5f53\u6a21\u5f0f\u53ef\u4ee5\u4ee5\u591a\u79cd\u65b9\u5f0f\u5339\u914d\u65f6\uff0c\u8d77\u59cb\u5b50\u6a21\u5f0f\u73b0\u5728\u4f1a\u5339\u914d\u5c3d\u53ef\u80fd\u5c11\u7684\u6587\u672c\uff0c\u800c\u975e\u5c3d\u53ef\u80fd\u591a\u7684\u6587\u672c\u3002\u4f8b\u5982\uff0c<code>%#\"aa*#\"%</code> \u8fd9\u6837\u7684\u6a21\u5f0f\u73b0\u5728\u4f1a\u4ece\u8f93\u5165\u4e2d\u9009\u62e9\u7b2c\u4e00\u7ec4 <code>a</code>\uff0c\u800c\u975e\u6700\u540e\u4e00\u7ec4\u3002</p>", "text": "\u66f4\u6539 SQL \u98ce\u683c\u7684 substring()\uff0c\u4f7f\u5176\u5177\u6709\u7b26\u5408\u6807\u51c6\u7684\u8d2a\u5a6a\u5339\u914d\u884c\u4e3a\uff08Tom Lane\uff09\u00a7 \u5f53\u6a21\u5f0f\u53ef\u4ee5\u4ee5\u591a\u79cd\u65b9\u5f0f\u5339\u914d\u65f6\uff0c\u8d77\u59cb\u5b50\u6a21\u5f0f\u73b0\u5728\u4f1a\u5339\u914d\u5c3d\u53ef\u80fd\u5c11\u7684\u6587\u672c\uff0c\u800c\u975e\u5c3d\u53ef\u80fd\u591a\u7684\u6587\u672c\u3002\u4f8b\u5982\uff0c%#\"aa*#\"% \u8fd9\u6837\u7684\u6a21\u5f0f\u73b0\u5728\u4f1a\u4ece\u8f93\u5165\u4e2d\u9009\u62e9\u7b2c\u4e00\u7ec4 a\uff0c\u800c\u975e\u6700\u540e\u4e00\u7ec4\u3002", "title": "\u66f4\u6539 SQL \u98ce\u683c\u7684 substring()\uff0c\u4f7f\u5176\u5177\u6709\u7b26\u5408\u6807\u51c6\u7684\u8d2a\u5a6a\u5339\u914d\u884c\u4e3a", "commits": ["7c850320d"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "166d4b8609ec7405c2352f3529d1dfa8e12b656c5e906a64a120eb7df55ade44", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["7c850320d"]], "identity_text": "Change SQL-style substring() to have standard-compliant greediness behavior (Tom Lane) In cases where the pattern can be matched in more than one way, the initial sub-pattern is now treated as matching the least possible amount of text rather than the greatest; for example, a pattern such as %#\"aa*#\"% now selects the first group of a's from the input, not the last group.", "commit_aliases": ["7c850320d"], "source_commits": ["7c850320d"], "source_entry_id": "12.0/migration/010", "db_id": "9c47761c11431bcc93925a9595436f30", "patch_ids": ["fe57f99348960f45008108591531601f"], "statement_hash": "a0c49e77d407b854796dcf81af2571c92861e368c1ea19542853f9d349b5a25d", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-22d94d76d1c6dd97", "migration": true}, {"id": "12.0-39f003b755289ae3", "cves": [], "html": "<p>\u4e0d\u518d\u5bf9 <a href=\"/docs/12/functions-xml.html\" title=\"9.14.\u00a0XML \u51fd\u6570\"><code>xpath()</code></a> \u6216 <code>XMLTABLE</code> \u7ed3\u6784\u7684\u7ed3\u679c\u8fdb\u884c\u7f8e\u5316\u8f93\u51fa\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/c06e3550d\">\u00a7</a></p>\n<p>\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c\u8fd9\u4e9b\u51fd\u6570\u4f1a\u5728\u8282\u70b9\u96c6\u503c\u4e2d\u63d2\u5165\u989d\u5916\u7684\u7a7a\u767d\uff08\u6362\u884c\u548c/\u6216\u7a7a\u683c\uff09\u3002\u8fd9\u5e76\u4e0d\u5408\u9002\uff0c\u56e0\u4e3a\u6839\u636e\u5177\u4f53\u7528\u9014\uff0c\u8fd9\u4e9b\u7a7a\u767d\u53ef\u80fd\u5177\u6709\u8bed\u4e49\u610f\u4e49\u3002</p>", "text": "\u4e0d\u518d\u5bf9 xpath() \u6216 XMLTABLE \u7ed3\u6784\u7684\u7ed3\u679c\u8fdb\u884c\u7f8e\u5316\u8f93\u51fa\uff08Tom Lane\uff09\u00a7 \u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c\u8fd9\u4e9b\u51fd\u6570\u4f1a\u5728\u8282\u70b9\u96c6\u503c\u4e2d\u63d2\u5165\u989d\u5916\u7684\u7a7a\u767d\uff08\u6362\u884c\u548c/\u6216\u7a7a\u683c\uff09\u3002\u8fd9\u5e76\u4e0d\u5408\u9002\uff0c\u56e0\u4e3a\u6839\u636e\u5177\u4f53\u7528\u9014\uff0c\u8fd9\u4e9b\u7a7a\u767d\u53ef\u80fd\u5177\u6709\u8bed\u4e49\u610f\u4e49\u3002", "title": "\u4e0d\u518d\u5bf9 xpath() \u6216 XMLTABLE \u7ed3\u6784\u7684\u7ed3\u679c\u8fdb\u884c\u7f8e\u5316\u8f93\u51fa", "commits": ["c06e3550d"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "f85a1ea6bc54cf5412cc6e62a23ccd9db784544dc53576ba91420aa04bdbb45d", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["c06e3550d"]], "identity_text": "Do not pretty-print the result of xpath() or the XMLTABLE construct (Tom Lane) In some cases, these functions would insert extra whitespace (newlines and/or spaces) in nodeset values. This is undesirable since depending on usage, the whitespace might be considered semantically significant.", "commit_aliases": ["c06e3550d"], "source_commits": ["c06e3550d"], "source_entry_id": "12.0/migration/011", "db_id": "8716d023f130c790c8eb92d3ac539ea2", "patch_ids": ["86841fc8e89d64fa796ca0a2224a90fc"], "statement_hash": "ba87e28346ceb127f86f2a36668ff4dfe4567bf84d196ed06a16fc2e85ea9e89", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-39f003b755289ae3", "migration": true}, {"id": "12.0-f0852cf31947cb08", "cves": [], "html": "<p>\u5c06\u547d\u4ee4\u884c\u5de5\u5177 <span>pg_verify_checksums</span> \u91cd\u547d\u540d\u4e3a<a href=\"/docs/12/app-pgchecksums.html\" title=\"pg_checksums\"><span><span>pg_checksums</span></span></a>\uff08Micha\u00ebl Paquier\uff09<a href=\"https://postgr.es/c/6dd263cfa\">\u00a7</a></p>", "text": "\u5c06\u547d\u4ee4\u884c\u5de5\u5177 pg_verify_checksums \u91cd\u547d\u540d\u4e3apg_checksums\uff08Micha\u00ebl Paquier\uff09\u00a7", "title": "\u5c06\u547d\u4ee4\u884c\u5de5\u5177 pg_verify_checksums \u91cd\u547d\u540d\u4e3apg_checksums", "commits": ["6dd263cfa"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "a2f33e3193d08a422f462163c6c3a5c6fa9c0a7e3a1cd6df65e7f70d86771bb9", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["6dd263cfa"]], "identity_text": "Rename command-line tool pg_verify_checksums to app-pgchecksums (Micha\u00ebl Paquier)", "commit_aliases": ["6dd263cfa"], "source_commits": ["6dd263cfa"], "source_entry_id": "12.0/migration/012", "db_id": "15b78f9b2e86ec480cb59f59cdb2884c", "patch_ids": ["3d81f3bdd33615533411e7a33aec69ff"], "statement_hash": "6f52efc19efbc75d23ffa67a5f64724f2c1f9c9ef7ff08716f1c3be7bb28605b", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-f0852cf31947cb08", "migration": true}, {"id": "12.0-fee9dbd95d921244", "cves": [], "html": "<p>\u5728<a href=\"/docs/12/app-pgrestore.html\" title=\"pg_restore\"><span>pg_restore</span></a>\u4e2d\uff0c\u8981\u6c42\u6307\u5b9a <code>-f -</code> \u624d\u80fd\u5c06\u8f6c\u50a8\u5185\u5bb9\u53d1\u9001\u5230\u6807\u51c6\u8f93\u51fa\uff08Euler Taveira\uff09<a href=\"https://postgr.es/c/413ccaa74\">\u00a7</a></p>\n<p>\u4ee5\u524d\uff0c\u5982\u679c\u672a\u6307\u5b9a\u76ee\u6807\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4f1a\u8fd9\u6837\u505a\uff0c\u4f46\u8fd9\u79cd\u884c\u4e3a\u88ab\u8ba4\u4e3a\u4e0d\u591f\u53cb\u597d\u3002</p>", "text": "\u5728pg_restore\u4e2d\uff0c\u8981\u6c42\u6307\u5b9a -f - \u624d\u80fd\u5c06\u8f6c\u50a8\u5185\u5bb9\u53d1\u9001\u5230\u6807\u51c6\u8f93\u51fa\uff08Euler Taveira\uff09\u00a7 \u4ee5\u524d\uff0c\u5982\u679c\u672a\u6307\u5b9a\u76ee\u6807\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u4f1a\u8fd9\u6837\u505a\uff0c\u4f46\u8fd9\u79cd\u884c\u4e3a\u88ab\u8ba4\u4e3a\u4e0d\u591f\u53cb\u597d\u3002", "title": "\u5728pg_restore\u4e2d\uff0c\u8981\u6c42\u6307\u5b9a -f - \u624d\u80fd\u5c06\u8f6c\u50a8\u5185\u5bb9\u53d1\u9001\u5230\u6807\u51c6\u8f93\u51fa", "commits": ["413ccaa74"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "588bd80793977eca8da5f1b7c2b62f4d763b95055428bbc0b1d41e3832b33677", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["413ccaa74"]], "identity_text": "In app-pgrestore , require specification of -f - to send the dump contents to standard output (Euler Taveira) Previously, this happened by default if no destination was specified, but that was deemed to be unfriendly.", "commit_aliases": ["413ccaa74"], "source_commits": ["413ccaa74"], "source_entry_id": "12.0/migration/013", "db_id": "76ec4d4b6d7ddc35f24914ca4317c35e", "patch_ids": ["a3b8c238e373d06d74534a0a9bcfb350"], "statement_hash": "db990fbc25e557db13bf91492fc43ba521a7dd3ddb098cbd75ba716ca953d04a", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-fee9dbd95d921244", "migration": true}, {"id": "12.0-bf14302696d38d09", "cves": [], "html": "<p>\u5728 <span>psql</span> \u7684 <code>\\pset format</code> \u547d\u4ee4\u4e2d\u7981\u6b62\u4e0d\u552f\u4e00\u7684\u7f29\u5199\uff08Daniel V\u00e9rit\u00e9\uff09<a href=\"https://postgr.es/c/eaf746a5b\">\u00a7</a> <a href=\"https://postgr.es/c/a7eece4fc\">\u00a7</a></p>\n<p>\u4f8b\u5982\uff0c\u4ee5\u524d <code>\\pset format a</code> \u4f1a\u9009\u62e9 <code>aligned</code>\uff1b\u73b0\u5728\u5b83\u4f1a\u5931\u8d25\uff0c\u56e0\u4e3a\u8fd9\u4e5f\u53ef\u80fd\u8868\u793a <code>asciidoc</code>\u3002</p>", "text": "\u5728 psql \u7684 \\pset format \u547d\u4ee4\u4e2d\u7981\u6b62\u4e0d\u552f\u4e00\u7684\u7f29\u5199\uff08Daniel V\u00e9rit\u00e9\uff09\u00a7 \u00a7 \u4f8b\u5982\uff0c\u4ee5\u524d \\pset format a \u4f1a\u9009\u62e9 aligned\uff1b\u73b0\u5728\u5b83\u4f1a\u5931\u8d25\uff0c\u56e0\u4e3a\u8fd9\u4e5f\u53ef\u80fd\u8868\u793a asciidoc\u3002", "title": "\u5728 psql \u7684 \\pset format \u547d\u4ee4\u4e2d\u7981\u6b62\u4e0d\u552f\u4e00\u7684\u7f29\u5199", "commits": ["a7eece4fc", "eaf746a5b"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "88ebae0dac19ce2da4017c49c54b50d613371acaa644bcd09c54c7bcbecf90a6", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["a7eece4fc"], ["eaf746a5b"]], "identity_text": "Disallow non-unique abbreviations in psql's \\pset format command (Daniel V\u00e9rit\u00e9) Previously, for example, \\pset format a chose aligned; it will now fail since that could equally well mean asciidoc.", "commit_aliases": ["a7eece4fc", "eaf746a5b"], "source_commits": ["a7eece4fc", "eaf746a5b"], "source_entry_id": "12.0/migration/014", "db_id": "c7fd52b912dcdbe7ac3f990fae91184b", "patch_ids": ["d71a90ef8229c00013f21e657e7f52c0", "d9335dd0fc16f83894c5bf5db1fd5910"], "statement_hash": "b19a375a15647aa3192654938ed915b9b45e1032ee6713d4cfecdd6e3b44d29e", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-bf14302696d38d09", "migration": true}, {"id": "12.0-a316fc9b14a3be83", "cves": [], "html": "<p>\u5728\u65b0\u5efa\u7684 B-\u6811\u7d22\u5f15\u4e2d\uff0c\u5c06\u7d22\u5f15\u6761\u76ee\u7684\u6700\u5927\u957f\u5ea6\u51cf\u5c11\u516b\u5b57\u8282\uff0c\u4ee5\u6539\u8fdb\u5bf9\u91cd\u590d\u6761\u76ee\u7684\u5904\u7406\uff08Peter Geoghegan\uff09<a href=\"https://postgr.es/c/dd299df81\">\u00a7</a></p>\n<p>\u8fd9\u610f\u5473\u7740\uff0c\u5bf9\u901a\u8fc7 <span>pg_upgrade</span> \u4ece\u4ee5\u524d\u7248\u672c\u5347\u7ea7\u800c\u6765\u7684\u7d22\u5f15\u6267\u884c<a href=\"/docs/12/sql-reindex.html\" title=\"REINDEX\"><span>REINDEX</span></a>\u64cd\u4f5c\u65f6\uff0c\u53ef\u80fd\u4f1a\u5931\u8d25\u3002</p>", "text": "\u5728\u65b0\u5efa\u7684 B-\u6811\u7d22\u5f15\u4e2d\uff0c\u5c06\u7d22\u5f15\u6761\u76ee\u7684\u6700\u5927\u957f\u5ea6\u51cf\u5c11\u516b\u5b57\u8282\uff0c\u4ee5\u6539\u8fdb\u5bf9\u91cd\u590d\u6761\u76ee\u7684\u5904\u7406\uff08Peter Geoghegan\uff09\u00a7 \u8fd9\u610f\u5473\u7740\uff0c\u5bf9\u901a\u8fc7 pg_upgrade \u4ece\u4ee5\u524d\u7248\u672c\u5347\u7ea7\u800c\u6765\u7684\u7d22\u5f15\u6267\u884cREINDEX\u64cd\u4f5c\u65f6\uff0c\u53ef\u80fd\u4f1a\u5931\u8d25\u3002", "title": "\u5728\u65b0\u5efa\u7684 B-\u6811\u7d22\u5f15\u4e2d\uff0c\u5c06\u7d22\u5f15\u6761\u76ee\u7684\u6700\u5927\u957f\u5ea6\u51cf\u5c11\u516b\u5b57\u8282\uff0c\u4ee5\u6539\u8fdb\u5bf9\u91cd\u590d\u6761\u76ee\u7684\u5904\u7406", "commits": ["dd299df81"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "56b3b4590cec7cbffd38c20164be5705411ce92bdb773b31eabcb4e9c5abd016", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["dd299df81"]], "identity_text": "In new btree indexes, the maximum index entry length is reduced by eight bytes, to improve handling of duplicate entries (Peter Geoghegan) This means that a sql-reindex operation on an index pg_upgrade'd from a previous release could potentially fail.", "commit_aliases": ["dd299df81"], "source_commits": ["dd299df81"], "source_entry_id": "12.0/migration/015", "db_id": "77c2078559927cb4722625ff14b67cfd", "patch_ids": ["a43ca6400105f4870998ecb53a5cd53b"], "statement_hash": "b4c594071658d7c9fac0f2e3a788138a8a2256d3f93632c720090c586d203c8d", "relations": [{"rule": 2, "type": "related", "target": "aad8107f07f86f1bde08c4fc057e36e3", "evidence": {"same_day": true, "patch_ids": ["a43ca6400105f4870998ecb53a5cd53b"]}}], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-a316fc9b14a3be83", "migration": true}, {"id": "12.0-fdf6fa70e9bf908d", "cves": [], "html": "<p>\u5982\u679c\u6ca1\u6709\u63d0\u4f9b\u53c2\u6570\u5217\u8868\u4e14\u5b58\u5728\u591a\u4e2a\u5339\u914d\u5bf9\u8c61\uff0c\u5219\u4f7f <a href=\"/docs/12/sql-dropfunction.html\" title=\"DROP FUNCTION\"><code>DROP IF EXISTS FUNCTION</code></a>/<code>PROCEDURE</code>/<code>AGGREGATE</code>/<code>ROUTINE</code> \u62a5\u9519\uff08David Rowley\uff09<a href=\"https://postgr.es/c/bfb456c1b\">\u00a7</a></p>\n<p>\u540c\u65f6\u6539\u8fdb\u6b64\u7c7b\u60c5\u51b5\u4e0b\u7684\u9519\u8bef\u6d88\u606f\u3002</p>", "text": "\u5982\u679c\u6ca1\u6709\u63d0\u4f9b\u53c2\u6570\u5217\u8868\u4e14\u5b58\u5728\u591a\u4e2a\u5339\u914d\u5bf9\u8c61\uff0c\u5219\u4f7f DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINE \u62a5\u9519\uff08David Rowley\uff09\u00a7 \u540c\u65f6\u6539\u8fdb\u6b64\u7c7b\u60c5\u51b5\u4e0b\u7684\u9519\u8bef\u6d88\u606f\u3002", "title": "\u5982\u679c\u6ca1\u6709\u63d0\u4f9b\u53c2\u6570\u5217\u8868\u4e14\u5b58\u5728\u591a\u4e2a\u5339\u914d\u5bf9\u8c61\uff0c\u5219\u4f7f DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINE \u62a5\u9519", "commits": ["bfb456c1b"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "ab9230b5836eaad5e3ee9ede05ef657febe94de0965eb4c94bff5ee9a9a7eab3", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["bfb456c1b"]], "identity_text": "Cause DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINE to generate an error if no argument list is supplied and there are multiple matching objects (David Rowley) Also improve the error message in such cases.", "commit_aliases": ["bfb456c1b"], "source_commits": ["bfb456c1b"], "source_entry_id": "12.0/migration/016", "db_id": "0235c27f5f6234d0ddc2f3943fe28903", "patch_ids": ["3ab14ad146dfca49718dd441c433ca90"], "statement_hash": "d9a13f536419bce12dcebcec26bdb174dd54ac99e8a88ea08c2e706fa9636b9f", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-fdf6fa70e9bf908d", "migration": true}, {"id": "12.0-5eda978cc5761799", "cves": [], "html": "<p>\u5c06 <a href=\"/docs/12/catalog-pg-statistic-ext.html\" title=\"51.51.\u00a0pg_statistic_ext\"><code>pg_statistic_ext</code></a> \u76ee\u5f55\u62c6\u5206\u4e3a\u4e24\u4e2a\u76ee\u5f55\uff0c\u5e76\u6dfb\u52a0\u76f8\u5e94\u7684 <a href=\"/docs/12/view-pg-stats-ext.html\" title=\"51.89.\u00a0pg_stats_ext\"><code>pg_stats_ext</code></a> \u89c6\u56fe\uff08Dean Rasheed\uff0cTomas Vondra\uff09<a href=\"https://postgr.es/c/6cbfb784c\">\u00a7</a> <a href=\"https://postgr.es/c/aa087ec64\">\u00a7</a></p>\n<p>\u6b64\u66f4\u6539\u652f\u6301\u5411\u65e0\u7279\u6743\u7528\u6237\u9690\u85cf\u53ef\u80fd\u654f\u611f\u7684\u7edf\u8ba1\u6570\u636e\u3002</p>", "text": "\u5c06 pg_statistic_ext \u76ee\u5f55\u62c6\u5206\u4e3a\u4e24\u4e2a\u76ee\u5f55\uff0c\u5e76\u6dfb\u52a0\u76f8\u5e94\u7684 pg_stats_ext \u89c6\u56fe\uff08Dean Rasheed\uff0cTomas Vondra\uff09\u00a7 \u00a7 \u6b64\u66f4\u6539\u652f\u6301\u5411\u65e0\u7279\u6743\u7528\u6237\u9690\u85cf\u53ef\u80fd\u654f\u611f\u7684\u7edf\u8ba1\u6570\u636e\u3002", "title": "\u5c06 pg_statistic_ext \u76ee\u5f55\u62c6\u5206\u4e3a\u4e24\u4e2a\u76ee\u5f55\uff0c\u5e76\u6dfb\u52a0\u76f8\u5e94\u7684 pg_stats_ext \u89c6\u56fe", "commits": ["6cbfb784c", "aa087ec64"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "24953cdc97926cab02809e0d9cbccbc620a01980ad29e92b026aaf2fb32c1a79", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["6cbfb784c"], ["aa087ec64"]], "identity_text": "Split the pg_statistic_ext catalog into two catalogs, and add the pg_stats_ext view of it (Dean Rasheed, Tomas Vondra) This change supports hiding potentially-sensitive statistics data from unprivileged users.", "commit_aliases": ["6cbfb784c", "aa087ec64"], "source_commits": ["6cbfb784c", "aa087ec64"], "source_entry_id": "12.0/migration/017", "db_id": "2c459fa6fb9d0b0257d58e699a5cb1d8", "patch_ids": ["3d504a760f99aa341951c42126673643", "4b39c020512cd33481dd3ddc8ee9ebc9"], "statement_hash": "010ea0b44f70c3142a933ff4c0414153b2bfee01435909ec5a1105fc274c2e18", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-5eda978cc5761799", "migration": true}, {"id": "12.0-d00c4bd3641fd1a2", "cves": [], "html": "<p>\u79fb\u9664\u8fc7\u65f6\u7684 <a href=\"/docs/12/catalog-pg-constraint.html\" title=\"51.13.\u00a0pg_constraint\"><code>pg_constraint</code></a>.<code>consrc</code> \u5217\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/96b00c433\">\u00a7</a></p>\n<p>\u6b64\u5217\u65e9\u5df2\u5f03\u7528\uff0c\u56e0\u4e3a\u5b83\u4e0d\u4f1a\u968f\u5176\u4ed6\u76ee\u5f55\u53d8\u66f4\uff08\u5982\u5217\u91cd\u547d\u540d\uff09\u800c\u66f4\u65b0\u3002\u4ece <code>pg_constraint</code> \u83b7\u53d6\u68c0\u67e5\u7ea6\u675f\u8868\u8fbe\u5f0f\u6587\u672c\u5f62\u5f0f\u7684\u63a8\u8350\u65b9\u6cd5\u662f <code>pg_get_expr(conbin, conrelid)</code>\u3002<code>pg_get_constraintdef()</code> \u4e5f\u662f\u4e00\u79cd\u6709\u7528\u7684\u66ff\u4ee3\u65b9\u6cd5\u3002</p>", "text": "\u79fb\u9664\u8fc7\u65f6\u7684 pg_constraint.consrc \u5217\uff08Peter Eisentraut\uff09\u00a7 \u6b64\u5217\u65e9\u5df2\u5f03\u7528\uff0c\u56e0\u4e3a\u5b83\u4e0d\u4f1a\u968f\u5176\u4ed6\u76ee\u5f55\u53d8\u66f4\uff08\u5982\u5217\u91cd\u547d\u540d\uff09\u800c\u66f4\u65b0\u3002\u4ece pg_constraint \u83b7\u53d6\u68c0\u67e5\u7ea6\u675f\u8868\u8fbe\u5f0f\u6587\u672c\u5f62\u5f0f\u7684\u63a8\u8350\u65b9\u6cd5\u662f pg_get_expr(conbin, conrelid)\u3002pg_get_constraintdef() \u4e5f\u662f\u4e00\u79cd\u6709\u7528\u7684\u66ff\u4ee3\u65b9\u6cd5\u3002", "title": "\u79fb\u9664\u8fc7\u65f6\u7684 pg_constraint.consrc \u5217", "commits": ["96b00c433"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "83e36a8fa1d611d80b4c44b16e30149554d14ebfe7f4afb75f6b1cbf75e9c184", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["96b00c433"]], "identity_text": "Remove obsolete pg_constraint.consrc column (Peter Eisentraut) This column has been deprecated for a long time, because it did not update in response to other catalog changes (such as column renamings). The recommended way to get a text version of a check constraint's expression from pg_constraint is pg_get_expr(conbin, conrelid). pg_get_constraintdef() is also a useful alternative.", "commit_aliases": ["96b00c433"], "source_commits": ["96b00c433"], "source_entry_id": "12.0/migration/018", "db_id": "540dcd929ed575145cdd3dfa85403d25", "patch_ids": ["8f43a7001865cf5cffdde3c0857978a7"], "statement_hash": "48fbc2ddb66cfb26a96d537444b8916f752f6abeeb930c27d117b3cffe615bb5", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-d00c4bd3641fd1a2", "migration": true}, {"id": "12.0-e788a0d7330d08d1", "cves": [], "html": "<p>\u79fb\u9664\u8fc7\u65f6\u7684 <a href=\"/docs/12/catalog-pg-attrdef.html\" title=\"51.6.\u00a0pg_attrdef\"><code>pg_attrdef</code></a>.<code>adsrc</code> \u5217\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/fe5038236\">\u00a7</a></p>\n<p>\u6b64\u5217\u65e9\u5df2\u5f03\u7528\uff0c\u56e0\u4e3a\u5b83\u4e0d\u4f1a\u968f\u5176\u4ed6\u76ee\u5f55\u53d8\u66f4\uff08\u5982\u5217\u91cd\u547d\u540d\uff09\u800c\u66f4\u65b0\u3002\u4ece <code>pg_attrdef</code> \u83b7\u53d6\u9ed8\u8ba4\u503c\u8868\u8fbe\u5f0f\u6587\u672c\u5f62\u5f0f\u7684\u63a8\u8350\u65b9\u6cd5\u662f <code>pg_get_expr(adbin, adrelid)</code>\u3002</p>", "text": "\u79fb\u9664\u8fc7\u65f6\u7684 pg_attrdef.adsrc \u5217\uff08Peter Eisentraut\uff09\u00a7 \u6b64\u5217\u65e9\u5df2\u5f03\u7528\uff0c\u56e0\u4e3a\u5b83\u4e0d\u4f1a\u968f\u5176\u4ed6\u76ee\u5f55\u53d8\u66f4\uff08\u5982\u5217\u91cd\u547d\u540d\uff09\u800c\u66f4\u65b0\u3002\u4ece pg_attrdef \u83b7\u53d6\u9ed8\u8ba4\u503c\u8868\u8fbe\u5f0f\u6587\u672c\u5f62\u5f0f\u7684\u63a8\u8350\u65b9\u6cd5\u662f pg_get_expr(adbin, adrelid)\u3002", "title": "\u79fb\u9664\u8fc7\u65f6\u7684 pg_attrdef.adsrc \u5217", "commits": ["fe5038236"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "6d0905e2b83d60619fc7fe5065068889c4c20833e918d0735515fe5c0ffb7971", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["fe5038236"]], "identity_text": "Remove obsolete pg_attrdef.adsrc column (Peter Eisentraut) This column has been deprecated for a long time, because it did not update in response to other catalog changes (such as column renamings). The recommended way to get a text version of a default-value expression from pg_attrdef is pg_get_expr(adbin, adrelid).", "commit_aliases": ["fe5038236"], "source_commits": ["fe5038236"], "source_entry_id": "12.0/migration/019", "db_id": "9113dd6228c06fa43c75cb0a8c39f73f", "patch_ids": ["662f006b784d370929b58b1648ec6931"], "statement_hash": "bf48f0d3f5eb232dd469c753862b8d6efcf03e3a1ddc234edbb666dcca4ff385", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-e788a0d7330d08d1", "migration": true}, {"id": "12.0-3f99413fea74ee44", "cves": [], "html": "<p>\u5c06 <a href=\"/docs/12/datatype-character.html#DATATYPE-CHARACTER-SPECIAL-TABLE\" title=\"\u8868\u00a08.5.\u00a0\u7279\u6b8a\u5b57\u7b26\u7c7b\u578b\">name</a> \u7c7b\u578b\u7684\u8868\u5217\u6807\u8bb0\u4e3a\u9ed8\u8ba4\u4f7f\u7528 <span>\u201c<span>C</span>\u201d</span> \u6392\u5e8f\u89c4\u5219\uff08Tom Lane\uff0cDaniel V\u00e9rit\u00e9\uff09<a href=\"https://postgr.es/c/586b98fdf\">\u00a7</a> <a href=\"https://postgr.es/c/478cacb50\">\u00a7</a></p>\n<p>\u6570\u636e\u7c7b\u578b <code>name</code> \u7684\u6bd4\u8f83\u64cd\u4f5c\u7b26\u73b0\u5728\u53ef\u4ee5\u4f7f\u7528\u4efb\u4f55\u6392\u5e8f\u89c4\u5219\uff0c\u800c\u4e0d\u518d\u603b\u662f\u4f7f\u7528 <span>\u201c<span>C</span>\u201d</span> \u6392\u5e8f\u89c4\u5219\u3002\u4e3a\u4fdd\u7559\u67e5\u8be2\u4ee5\u524d\u7684\u8bed\u4e49\uff0c\u73b0\u5728\u5c06 <code>name</code> \u7c7b\u578b\u7684\u5217\u663e\u5f0f\u6807\u8bb0\u4e3a\u4f7f\u7528 <span>\u201c<span>C</span>\u201d</span> \u6392\u5e8f\u89c4\u5219\u3002\u8fd9\u4e00\u6539\u52a8\u7684\u526f\u4f5c\u7528\u662f\uff0c<code>name</code> \u5217\u4e0a\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u64cd\u4f5c\u7b26\u73b0\u5728\u9ed8\u8ba4\u4f7f\u7528 <span>\u201c<span>C</span>\u201d</span> \u6392\u5e8f\u89c4\u5219\uff0c\u800c\u975e\u6570\u636e\u5e93\u7684\u6392\u5e8f\u89c4\u5219\uff0c\u6765\u786e\u5b9a\u4f9d\u8d56\u533a\u57df\u8bbe\u7f6e\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u6a21\u5f0f\uff08\u4f8b\u5982 <code>\\w</code>\uff09\u7684\u884c\u4e3a\u3002\u5982\u679c\u5e0c\u671b <code>name</code> \u5217\u4e0a\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u5177\u6709\u975e C \u884c\u4e3a\uff0c\u8bf7\u9644\u52a0\u4e00\u4e2a\u663e\u5f0f\u7684 <code>COLLATE</code> \u5b50\u53e5\u3002\uff08\u5bf9\u4e8e\u7528\u6237\u5b9a\u4e49\u7684 <code>name</code> \u5217\uff0c\u53e6\u4e00\u79cd\u65b9\u6cd5\u662f\u5728\u5efa\u8868\u65f6\u6307\u5b9a\u4e0d\u540c\u7684\u6392\u5e8f\u89c4\u5219\uff1b\u4f46\u8fd9\u53ea\u662f\u5c06\u5411\u540e\u4e0d\u517c\u5bb9\u6027\u8f6c\u79fb\u5230\u4e86\u6bd4\u8f83\u64cd\u4f5c\u7b26\u4e0a\u3002\uff09</p>", "text": "\u5c06 name \u7c7b\u578b\u7684\u8868\u5217\u6807\u8bb0\u4e3a\u9ed8\u8ba4\u4f7f\u7528 \u201cC\u201d \u6392\u5e8f\u89c4\u5219\uff08Tom Lane\uff0cDaniel V\u00e9rit\u00e9\uff09\u00a7 \u00a7 \u6570\u636e\u7c7b\u578b name \u7684\u6bd4\u8f83\u64cd\u4f5c\u7b26\u73b0\u5728\u53ef\u4ee5\u4f7f\u7528\u4efb\u4f55\u6392\u5e8f\u89c4\u5219\uff0c\u800c\u4e0d\u518d\u603b\u662f\u4f7f\u7528 \u201cC\u201d \u6392\u5e8f\u89c4\u5219\u3002\u4e3a\u4fdd\u7559\u67e5\u8be2\u4ee5\u524d\u7684\u8bed\u4e49\uff0c\u73b0\u5728\u5c06 name \u7c7b\u578b\u7684\u5217\u663e\u5f0f\u6807\u8bb0\u4e3a\u4f7f\u7528 \u201cC\u201d \u6392\u5e8f\u89c4\u5219\u3002\u8fd9\u4e00\u6539\u52a8\u7684\u526f\u4f5c\u7528\u662f\uff0cname \u5217\u4e0a\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u64cd\u4f5c\u7b26\u73b0\u5728\u9ed8\u8ba4\u4f7f\u7528 \u201cC\u201d \u6392\u5e8f\u89c4\u5219\uff0c\u800c\u975e\u6570\u636e\u5e93\u7684\u6392\u5e8f\u89c4\u5219\uff0c\u6765\u786e\u5b9a\u4f9d\u8d56\u533a\u57df\u8bbe\u7f6e\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u6a21\u5f0f\uff08\u4f8b\u5982 \\w\uff09\u7684\u884c\u4e3a\u3002\u5982\u679c\u5e0c\u671b name \u5217\u4e0a\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u5177\u6709\u975e C \u884c\u4e3a\uff0c\u8bf7\u9644\u52a0\u4e00\u4e2a\u663e\u5f0f\u7684 COLLATE \u5b50\u53e5\u3002\uff08\u5bf9\u4e8e\u7528\u6237\u5b9a\u4e49\u7684 name \u5217\uff0c\u53e6\u4e00\u79cd\u65b9\u6cd5\u662f\u5728\u5efa\u8868\u65f6\u6307\u5b9a\u4e0d\u540c\u7684\u6392\u5e8f\u89c4\u5219\uff1b\u4f46\u8fd9\u53ea\u662f\u5c06\u5411\u540e\u4e0d\u517c\u5bb9\u6027\u8f6c\u79fb\u5230\u4e86\u6bd4\u8f83\u64cd\u4f5c\u7b26\u4e0a\u3002\uff09", "title": "\u5c06 name \u7c7b\u578b\u7684\u8868\u5217\u6807\u8bb0\u4e3a\u9ed8\u8ba4\u4f7f\u7528 \u201cC\u201d \u6392\u5e8f\u89c4\u5219", "commits": ["478cacb50", "586b98fdf"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "4f6a63b5108ef2afd68f8da8f80d8f001854f8d8d0086b41dd08e63e3ccf1e2b", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["478cacb50"], ["586b98fdf"]], "identity_text": "Mark table columns of type name as having C collation by default (Tom Lane, Daniel V\u00e9rit\u00e9) The comparison operators for data type name can now use any collation, rather than always using C collation. To preserve the previous semantics of queries, columns of type name are now explicitly marked as having C collation. A side effect of this is that regular-expression operators on name columns will now use the C collation by default, not the database collation, to determine the behavior of locale-dependent regular expression patterns (such as \\w). If you want non-C behavior for a regular expression on a name column, attach an explicit COLLATE clause. (For user-defined name columns, another possibility is to specify a different collation at table creation time; but that just moves the non-backwards-compatibility to the comparison operators.)", "commit_aliases": ["478cacb50", "586b98fdf"], "source_commits": ["478cacb50", "586b98fdf"], "source_entry_id": "12.0/migration/020", "db_id": "658e94932e4f1df8c9757551ca1f8f58", "patch_ids": ["a6c0e302cd9ca15ba56f4271ba6cf754", "c51efcc59cc6e3d8f7f1f4d62187e0cc"], "statement_hash": "b60fbe3a8b0b66c9884aca42743d0d5013d11bc6bce5adf99bfd858acbe7e6b7", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-3f99413fea74ee44", "migration": true}, {"id": "12.0-d1eb915a1ae7f774", "cves": [], "html": "<p>\u5c06 <a href=\"/docs/12/information-schema.html\" title=\"\u7b2c\u00a036\u00a0\u7ae0\u00a0\u4fe1\u606f\u6a21\u5f0f\"><code>information_schema</code></a> \u89c6\u56fe\u4e2d\u7684\u5bf9\u8c61\u540d\u5217\u89c6\u4e3a <code>name</code> \u7c7b\u578b\uff0c\u800c\u975e <code>varchar</code> \u7c7b\u578b\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/7c15cef86\">\u00a7</a> <a href=\"https://postgr.es/c/5bbee34d9\">\u00a7</a> <a href=\"https://postgr.es/c/6b0faf723\">\u00a7</a></p>\n<p>\u6309\u7167 SQL \u6807\u51c6\uff0c<code>information_schema</code> \u89c6\u56fe\u4e2d\u7684\u5bf9\u8c61\u540d\u5217\u88ab\u58f0\u660e\u4e3a\u57df\u7c7b\u578b <code>sql_identifier</code>\u3002\u5728 <span>PostgreSQL</span> \u4e2d\uff0c\u5e95\u5c42\u76ee\u5f55\u5217\u5b9e\u9645\u4e3a <code>name</code> \u7c7b\u578b\u3002\u6b64\u66f4\u6539\u4f7f <code>sql_identifier</code> \u6210\u4e3a\u57fa\u4e8e <code>name</code> \u7684\u57df\uff0c\u800c\u975e\u539f\u6765\u7684 <code>varchar</code>\u3002\u8fd9\u6d88\u9664\u4e86\u6bd4\u8f83\u548c\u6392\u5e8f\u884c\u4e3a\u4e2d\u7684\u8bed\u4e49\u4e0d\u4e00\u81f4\uff0c\u53ef\u663e\u8457\u63d0\u9ad8\u5bf9 <code>information_schema</code> \u89c6\u56fe\u4e2d\u7684\u5bf9\u8c61\u540d\u5217\u65bd\u52a0\u9650\u5236\u7684\u67e5\u8be2\u6027\u80fd\u3002\u4e0d\u8fc7\u8bf7\u6ce8\u610f\uff0c\u4e0d\u7b49\u5f0f\u9650\u5236\uff0c\u4f8b\u5982</p>\n<pre>SELECT ... FROM information_schema.tables WHERE table_name &lt; 'foo';\n</pre>\n<p>\u73b0\u5728\u9ed8\u8ba4\u4f7f\u7528 <span>\u201c<span>C</span>\u201d</span> \u533a\u57df\u8bbe\u7f6e\u7684\u6bd4\u8f83\u8bed\u4e49\uff0c\u800c\u975e\u50cf\u4ee5\u524d\u90a3\u6837\u4f7f\u7528\u6570\u636e\u5e93\u7684\u9ed8\u8ba4\u6392\u5e8f\u89c4\u5219\u3002\u5bf9\u8fd9\u4e9b\u5217\u8fdb\u884c\u6392\u5e8f\u4e5f\u5c06\u9075\u5faa <span>\u201c<span>C</span>\u201d</span> \u6392\u5e8f\u89c4\u5219\u3002\u901a\u8fc7\u6dfb\u52a0 <code>COLLATE \"default\"</code> \u5b50\u53e5\uff0c\u53ef\u4ee5\u5f3a\u5236\u4f7f\u7528\u4ee5\u524d\u7684\u884c\u4e3a\uff08\u53ca\u5176\u4f4e\u6548\u7387\uff09\u3002</p>", "text": "\u5c06 information_schema \u89c6\u56fe\u4e2d\u7684\u5bf9\u8c61\u540d\u5217\u89c6\u4e3a name \u7c7b\u578b\uff0c\u800c\u975e varchar \u7c7b\u578b\uff08Tom Lane\uff09\u00a7 \u00a7 \u00a7 \u6309\u7167 SQL \u6807\u51c6\uff0cinformation_schema \u89c6\u56fe\u4e2d\u7684\u5bf9\u8c61\u540d\u5217\u88ab\u58f0\u660e\u4e3a\u57df\u7c7b\u578b sql_identifier\u3002\u5728 PostgreSQL \u4e2d\uff0c\u5e95\u5c42\u76ee\u5f55\u5217\u5b9e\u9645\u4e3a name \u7c7b\u578b\u3002\u6b64\u66f4\u6539\u4f7f sql_identifier \u6210\u4e3a\u57fa\u4e8e name \u7684\u57df\uff0c\u800c\u975e\u539f\u6765\u7684 varchar\u3002\u8fd9\u6d88\u9664\u4e86\u6bd4\u8f83\u548c\u6392\u5e8f\u884c\u4e3a\u4e2d\u7684\u8bed\u4e49\u4e0d\u4e00\u81f4\uff0c\u53ef\u663e\u8457\u63d0\u9ad8\u5bf9 information_schema \u89c6\u56fe\u4e2d\u7684\u5bf9\u8c61\u540d\u5217\u65bd\u52a0\u9650\u5236\u7684\u67e5\u8be2\u6027\u80fd\u3002\u4e0d\u8fc7\u8bf7\u6ce8\u610f\uff0c\u4e0d\u7b49\u5f0f\u9650\u5236\uff0c\u4f8b\u5982 SELECT ... FROM information_schema.tables WHERE table_name < 'foo'; \u73b0\u5728\u9ed8\u8ba4\u4f7f\u7528 \u201cC\u201d \u533a\u57df\u8bbe\u7f6e\u7684\u6bd4\u8f83\u8bed\u4e49\uff0c\u800c\u975e\u50cf\u4ee5\u524d\u90a3\u6837\u4f7f\u7528\u6570\u636e\u5e93\u7684\u9ed8\u8ba4\u6392\u5e8f\u89c4\u5219\u3002\u5bf9\u8fd9\u4e9b\u5217\u8fdb\u884c\u6392\u5e8f\u4e5f\u5c06\u9075\u5faa \u201cC\u201d \u6392\u5e8f\u89c4\u5219\u3002\u901a\u8fc7\u6dfb\u52a0 COLLATE \"default\" \u5b50\u53e5\uff0c\u53ef\u4ee5\u5f3a\u5236\u4f7f\u7528\u4ee5\u524d\u7684\u884c\u4e3a\uff08\u53ca\u5176\u4f4e\u6548\u7387\uff09\u3002", "title": "\u5c06 information_schema \u89c6\u56fe\u4e2d\u7684\u5bf9\u8c61\u540d\u5217\u89c6\u4e3a name \u7c7b\u578b\uff0c\u800c\u975e varchar \u7c7b\u578b", "commits": ["5bbee34d9", "6b0faf723", "7c15cef86"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "7cb033ae1d8ca8510d5bb58a87744b52447f27fb418706e8280be3a55693ba67", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["5bbee34d9"], ["6b0faf723"], ["7c15cef86"]], "identity_text": "Treat object-name columns in the information_schema views as being of type name, not varchar (Tom Lane) Per the SQL standard, object-name columns in the information_schema views are declared as being of domain type sql_identifier. In PostgreSQL, the underlying catalog columns are really of type name. This change makes sql_identifier be a domain over name, rather than varchar as before. This eliminates a semantic mismatch in comparison and sorting behavior, which can greatly improve the performance of queries on information_schema views that restrict an object-name column. Note however that inequality restrictions, for example SELECT ... FROM information_schema.tables WHERE table_name < 'foo'; will now use C-locale comparison semantics by default, rather than the database's default collation as before. Sorting on these columns will also follow C ordering rules. The previous behavior (and inefficiency) can be enforced by adding a COLLATE \"default\" clause.", "commit_aliases": ["5bbee34d9", "6b0faf723", "7c15cef86"], "source_commits": ["5bbee34d9", "6b0faf723", "7c15cef86"], "source_entry_id": "12.0/migration/021", "db_id": "ea0cca0df83f59b85c136c6197244eea", "patch_ids": ["389faa0fc4e611f429d029be2114d09e", "6ea305b30fcdb53b75e37438c4128b60", "84d31a7582368b29a2047d53249be003"], "statement_hash": "9ee3910fa20a7382c5d45e080d09c9cd86b0ec0e2ae420f4fd918d24cf9535ac", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-d1eb915a1ae7f774", "migration": true}, {"id": "12.0-87f6d83c1ef11f11", "cves": [], "html": "<p>\u79fb\u9664\u7981\u7528\u52a8\u6001\u5171\u4eab\u5185\u5b58\u7684\u529f\u80fd\uff08Kyotaro Horiguchi\uff09<a href=\"https://postgr.es/c/bcbd94080\">\u00a7</a></p>\n<p>\u5177\u4f53\u800c\u8a00\uff0c<a href=\"/docs/12/runtime-config-resource.html#GUC-DYNAMIC-SHARED-MEMORY-TYPE\">dynamic_shared_memory_type</a>\u4e0d\u518d\u80fd\u591f\u8bbe\u7f6e\u4e3a <code>none</code>\u3002</p>", "text": "\u79fb\u9664\u7981\u7528\u52a8\u6001\u5171\u4eab\u5185\u5b58\u7684\u529f\u80fd\uff08Kyotaro Horiguchi\uff09\u00a7 \u5177\u4f53\u800c\u8a00\uff0cdynamic_shared_memory_type\u4e0d\u518d\u80fd\u591f\u8bbe\u7f6e\u4e3a none\u3002", "title": "\u79fb\u9664\u7981\u7528\u52a8\u6001\u5171\u4eab\u5185\u5b58\u7684\u529f\u80fd", "commits": ["bcbd94080"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "39d00563b9539b6cee8f5a19499f3c1559846f37bafa76e5dbec1b092fbce83a", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["bcbd94080"]], "identity_text": "Remove the ability to disable dynamic shared memory (Kyotaro Horiguchi) Specifically, guc-dynamic-shared-memory-type can no longer be set to none.", "commit_aliases": ["bcbd94080"], "source_commits": ["bcbd94080"], "source_entry_id": "12.0/migration/022", "db_id": "16b3e784c0f9249ad245a4789c9b3bd8", "patch_ids": ["5290889193fc66b7a8c1772631cd0626"], "statement_hash": "09d6cef5675386e3e0403145ec5a70d1d2889c1162a567c7a15cc0fc0b45c4f1", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-87f6d83c1ef11f11", "migration": true}, {"id": "12.0-94954ee89347a85d", "cves": [], "html": "<p>\u66f4\u4e25\u683c\u5730\u89e3\u6790 libpq \u6574\u6570\u8fde\u63a5\u53c2\u6570\uff08Fabien Coelho\uff09<a href=\"https://postgr.es/c/e7a221797\">\u00a7</a></p>\n<p>\u5728\u4ee5\u524d\u7684\u7248\u672c\u4e2d\uff0c\u4e3a\u8fde\u63a5\u53c2\u6570 <code>connect_timeout</code>\u3001<code>keepalives</code>\u3001<code>keepalives_count</code>\u3001<code>keepalives_idle</code>\u3001<code>keepalives_interval</code> \u548c <code>port</code> \u4f7f\u7528\u4e0d\u6b63\u786e\u7684\u6574\u6570\u503c\uff0c\u4f1a\u5bfc\u81f4 libpq \u5ffd\u7565\u8fd9\u4e9b\u503c\uff0c\u6216\u5931\u8d25\u5e76\u7ed9\u51fa\u4e0d\u6b63\u786e\u7684\u9519\u8bef\u6d88\u606f\u3002</p>", "text": "\u66f4\u4e25\u683c\u5730\u89e3\u6790 libpq \u6574\u6570\u8fde\u63a5\u53c2\u6570\uff08Fabien Coelho\uff09\u00a7 \u5728\u4ee5\u524d\u7684\u7248\u672c\u4e2d\uff0c\u4e3a\u8fde\u63a5\u53c2\u6570 connect_timeout\u3001keepalives\u3001keepalives_count\u3001keepalives_idle\u3001keepalives_interval \u548c port \u4f7f\u7528\u4e0d\u6b63\u786e\u7684\u6574\u6570\u503c\uff0c\u4f1a\u5bfc\u81f4 libpq \u5ffd\u7565\u8fd9\u4e9b\u503c\uff0c\u6216\u5931\u8d25\u5e76\u7ed9\u51fa\u4e0d\u6b63\u786e\u7684\u9519\u8bef\u6d88\u606f\u3002", "title": "\u66f4\u4e25\u683c\u5730\u89e3\u6790 libpq \u6574\u6570\u8fde\u63a5\u53c2\u6570", "commits": ["e7a221797"], "section": "\u517c\u5bb9\u6027", "category": "compatibility", "source_url": "/docs/release/12.0/#id-1.11.6.28.4", "source_hash": "b9e78eb70645b376f389704fba9dbbd4b6edb41b8058eab59e630177c5d68f25", "section_path": ["\u517c\u5bb9\u6027"], "commit_groups": [["e7a221797"]], "identity_text": "Parse libpq integer connection parameters more strictly (Fabien Coelho) In previous releases, using an incorrect integer value for connection parameters connect_timeout, keepalives, keepalives_count, keepalives_idle, keepalives_interval and port resulted in libpq either ignoring those values or failing with incorrect error messages.", "commit_aliases": ["e7a221797"], "source_commits": ["e7a221797"], "source_entry_id": "12.0/migration/023", "db_id": "4c9ccf81c0605378186c0688d99549ac", "patch_ids": ["4a2b44816b81ca636e21b50d5bc46e6f"], "statement_hash": "6f9c35d1e17ec945c0b30682b4fc9c3d97e81cfefc1c6ea1fe735b7fc59c209a", "relations": [], "category_label": "\u517c\u5bb9\u6027\u53d8\u5316", "url": "/docs/compare/?release=12.0#12.0-94954ee89347a85d", "migration": true}, {"id": "12.0-65ee43da4c3f8640", "cves": [], "html": "<p>\u63d0\u9ad8\u5206\u533a\u8868\u4e0a\u8bb8\u591a\u64cd\u4f5c\u7684\u6027\u80fd\uff08Amit Langote\uff0cDavid Rowley\uff0cTom Lane\uff0c\u00c1lvaro Herrera\uff09<a href=\"https://postgr.es/c/c6e4133fa\">\u00a7</a> <a href=\"https://postgr.es/c/34c9e455d\">\u00a7</a> <a href=\"https://postgr.es/c/3f2393ede\">\u00a7</a> <a href=\"https://postgr.es/c/9eefba181\">\u00a7</a> <a href=\"https://postgr.es/c/428b260f8\">\u00a7</a></p>\n<p>\u5bf9\u4e8e\u62e5\u6709\u6570\u5343\u4e2a\u5b50\u5206\u533a\u7684\u8868\uff0c\u53ea\u5f71\u54cd\u5c11\u91cf\u5206\u533a\u7684\u64cd\u4f5c\u73b0\u5728\u80fd\u591f\u9ad8\u6548\u5904\u7406\u3002</p>", "text": "\u63d0\u9ad8\u5206\u533a\u8868\u4e0a\u8bb8\u591a\u64cd\u4f5c\u7684\u6027\u80fd\uff08Amit Langote\uff0cDavid Rowley\uff0cTom Lane\uff0c\u00c1lvaro Herrera\uff09\u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u5bf9\u4e8e\u62e5\u6709\u6570\u5343\u4e2a\u5b50\u5206\u533a\u7684\u8868\uff0c\u53ea\u5f71\u54cd\u5c11\u91cf\u5206\u533a\u7684\u64cd\u4f5c\u73b0\u5728\u80fd\u591f\u9ad8\u6548\u5904\u7406\u3002", "title": "\u63d0\u9ad8\u5206\u533a\u8868\u4e0a\u8bb8\u591a\u64cd\u4f5c\u7684\u6027\u80fd", "commits": ["34c9e455d", "3f2393ede", "428b260f8", "9eefba181", "c6e4133fa"], "section": "\u670d\u52a1\u5668 / \u5206\u533a", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "a030c44a6bda49aa7c10130b1ea630d92d4ccb1693797a3fa5d67c26e30977b2", "section_path": ["\u670d\u52a1\u5668", "\u5206\u533a"], "commit_groups": [["34c9e455d"], ["3f2393ede"], ["428b260f8"], ["9eefba181"], ["c6e4133fa"]], "identity_text": "Improve performance of many operations on partitioned tables (Amit Langote, David Rowley, Tom Lane, \u00c1lvaro Herrera) Allow tables with thousands of child partitions to be processed efficiently by operations that only affect a small number of partitions.", "commit_aliases": ["34c9e455d", "3f2393ede", "428b260f8", "9eefba181", "c6e4133fa"], "source_commits": ["34c9e455d", "3f2393ede", "428b260f8", "9eefba181", "c6e4133fa"], "source_entry_id": "12.0/changes/001", "db_id": "6581fcf4cf7e96cc3cf66a5c2b61f96b", "patch_ids": ["2152487ea6caf346741426532b6bc621", "30c3100ae10f72b727560637b07a7130", "968dede4cc487f6435cd952fdc9d4c7f", "d7af3ea5e86b657289ed413905a3fafc", "f8f7d9451de18f0b7f511197046cc3d4"], "statement_hash": "301dd5333d6443589c319946860fa172fc1cf6cbe0e0fee545d436039230cbd5", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-65ee43da4c3f8640", "migration": false}, {"id": "12.0-c1fc0460db22fa1e", "cves": [], "html": "<p>\u5141\u8bb8<a href=\"/docs/12/ddl-constraints.html#DDL-CONSTRAINTS-FK\" title=\"5.4.5.\u00a0\u5916\u952e\">\u5916\u952e</a>\u5f15\u7528\u5206\u533a\u8868\uff08\u00c1lvaro Herrera\uff09<a href=\"https://postgr.es/c/f56f8f8da\">\u00a7</a></p>", "text": "\u5141\u8bb8\u5916\u952e\u5f15\u7528\u5206\u533a\u8868\uff08\u00c1lvaro Herrera\uff09\u00a7", "title": "\u5141\u8bb8\u5916\u952e\u5f15\u7528\u5206\u533a\u8868", "commits": ["f56f8f8da"], "section": "\u670d\u52a1\u5668 / \u5206\u533a", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "1190e758b781a08511794f74c0905ba70cec7c14102f7f2da66b815d6cb003a4", "section_path": ["\u670d\u52a1\u5668", "\u5206\u533a"], "commit_groups": [["f56f8f8da"]], "identity_text": "Allow foreign keys to reference partitioned tables (\u00c1lvaro Herrera)", "commit_aliases": ["f56f8f8da"], "source_commits": ["f56f8f8da"], "source_entry_id": "12.0/changes/002", "db_id": "9fd846279eb687f04ed1ea69ed71f987", "patch_ids": ["ad374fbb097163aa712cc28edab34597"], "statement_hash": "2f7a7e084d7aa9b0bbb5a07c5d4244e8fc65018c5bf3e2b7500b05577626cfb4", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-c1fc0460db22fa1e", "migration": false}, {"id": "12.0-baad693e2cfca66d", "cves": [], "html": "<p>\u63d0\u9ad8\u5411\u5206\u533a\u8868\u6267\u884c <code>COPY</code> \u7684\u901f\u5ea6\uff08David Rowley\uff09<a href=\"https://postgr.es/c/0d5f05cde\">\u00a7</a></p>", "text": "\u63d0\u9ad8\u5411\u5206\u533a\u8868\u6267\u884c COPY \u7684\u901f\u5ea6\uff08David Rowley\uff09\u00a7", "title": "\u63d0\u9ad8\u5411\u5206\u533a\u8868\u6267\u884c COPY \u7684\u901f\u5ea6", "commits": ["0d5f05cde"], "section": "\u670d\u52a1\u5668 / \u5206\u533a", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "ccdb5af94f8e2e1963e928b52d58a73eb1b055a9ab4f2f035ff832690d3cf2ea", "section_path": ["\u670d\u52a1\u5668", "\u5206\u533a"], "commit_groups": [["0d5f05cde"]], "identity_text": "Improve speed of COPY into partitioned tables (David Rowley)", "commit_aliases": ["0d5f05cde"], "source_commits": ["0d5f05cde"], "source_entry_id": "12.0/changes/003", "db_id": "5d7dab15840bb142e80ec83db679d5e7", "patch_ids": ["c3f8c3635b66b7e2ca717d180bf741e5"], "statement_hash": "6548c76067e2c0f45573b0f2fab807d08c8922751bd5c3fdd6cc967512df93c1", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-baad693e2cfca66d", "migration": false}, {"id": "12.0-72709b01bbd04960", "cves": [], "html": "<p>\u5141\u8bb8\u5206\u533a\u8fb9\u754c\u4f7f\u7528\u4efb\u610f\u8868\u8fbe\u5f0f\uff08Kyotaro Horiguchi\uff0cTom Lane\uff0cAmit Langote\uff09<a href=\"https://postgr.es/c/7c079d741\">\u00a7</a></p>\n<p>\u6b64\u7c7b\u8868\u8fbe\u5f0f\u5728\u521b\u5efa\u5206\u533a\u8868\u65f6\u6c42\u503c\u3002\u4ee5\u524d\uff0c\u53ea\u5141\u8bb8\u5c06\u7b80\u5355\u5e38\u91cf\u7528\u4f5c\u5206\u533a\u8fb9\u754c\u3002</p>", "text": "\u5141\u8bb8\u5206\u533a\u8fb9\u754c\u4f7f\u7528\u4efb\u610f\u8868\u8fbe\u5f0f\uff08Kyotaro Horiguchi\uff0cTom Lane\uff0cAmit Langote\uff09\u00a7 \u6b64\u7c7b\u8868\u8fbe\u5f0f\u5728\u521b\u5efa\u5206\u533a\u8868\u65f6\u6c42\u503c\u3002\u4ee5\u524d\uff0c\u53ea\u5141\u8bb8\u5c06\u7b80\u5355\u5e38\u91cf\u7528\u4f5c\u5206\u533a\u8fb9\u754c\u3002", "title": "\u5141\u8bb8\u5206\u533a\u8fb9\u754c\u4f7f\u7528\u4efb\u610f\u8868\u8fbe\u5f0f", "commits": ["7c079d741"], "section": "\u670d\u52a1\u5668 / \u5206\u533a", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "83fdc747e63d887e35060e5e09d7f9adc228728f62e6a8b73d610fef4ada931b", "section_path": ["\u670d\u52a1\u5668", "\u5206\u533a"], "commit_groups": [["7c079d741"]], "identity_text": "Allow partition bounds to be any expression (Kyotaro Horiguchi, Tom Lane, Amit Langote) Such expressions are evaluated at partitioned-table creation time. Previously, only simple constants were allowed as partition bounds.", "commit_aliases": ["7c079d741"], "source_commits": ["7c079d741"], "source_entry_id": "12.0/changes/004", "db_id": "95d1759c8db1ffd3034846f6b6f3102a", "patch_ids": ["9d959430e6a704302f0f799eddeb986b"], "statement_hash": "e46421374aec00412d7e8230a01848bc4771787db3c1cff5a1459dfbc83a9cc8", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-72709b01bbd04960", "migration": false}, {"id": "12.0-79cb632c8ee415e8", "cves": [], "html": "<p>\u5141\u8bb8 <code>CREATE TABLE</code> \u4e3a\u5206\u533a\u8868\u6307\u5b9a\u7684\u8868\u7a7a\u95f4\u5f71\u54cd\u5176\u5b50\u5206\u533a\u7684\u8868\u7a7a\u95f4\uff08David Rowley\uff0c\u00c1lvaro Herrera\uff09<a href=\"https://postgr.es/c/ca4103025\">\u00a7</a></p>", "text": "\u5141\u8bb8 CREATE TABLE \u4e3a\u5206\u533a\u8868\u6307\u5b9a\u7684\u8868\u7a7a\u95f4\u5f71\u54cd\u5176\u5b50\u5206\u533a\u7684\u8868\u7a7a\u95f4\uff08David Rowley\uff0c\u00c1lvaro Herrera\uff09\u00a7", "title": "\u5141\u8bb8 CREATE TABLE \u4e3a\u5206\u533a\u8868\u6307\u5b9a\u7684\u8868\u7a7a\u95f4\u5f71\u54cd\u5176\u5b50\u5206\u533a\u7684\u8868\u7a7a\u95f4", "commits": ["ca4103025"], "section": "\u670d\u52a1\u5668 / \u5206\u533a", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "3ce769c078c005e050a05aa3f9ecff85243ca5b12d497c538ba775aa2305124b", "section_path": ["\u670d\u52a1\u5668", "\u5206\u533a"], "commit_groups": [["ca4103025"]], "identity_text": "Allow CREATE TABLE's tablespace specification for a partitioned table to affect the tablespace of its children (David Rowley, \u00c1lvaro Herrera)", "commit_aliases": ["ca4103025"], "source_commits": ["ca4103025"], "source_entry_id": "12.0/changes/005", "db_id": "37a530b72f4aeb8103a90faa4a6ffd2e", "patch_ids": ["2a338b618857d47717fbe4cd8db454aa"], "statement_hash": "f2f77952ebeabd88fdeb386433d5f2c4aa44fa4637a0bfdbbf594eb5595462f4", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-79cb632c8ee415e8", "migration": false}, {"id": "12.0-b34dacfcc2aaeddc", "cves": [], "html": "<p>\u5982\u679c\u5df2\u7ecf\u6309\u6240\u9700\u987a\u5e8f\u626b\u63cf\u5206\u533a\uff0c\u5219\u907f\u514d\u6392\u5e8f\uff08David Rowley\uff09<a href=\"https://postgr.es/c/959d00e9d\">\u00a7</a></p>", "text": "\u5982\u679c\u5df2\u7ecf\u6309\u6240\u9700\u987a\u5e8f\u626b\u63cf\u5206\u533a\uff0c\u5219\u907f\u514d\u6392\u5e8f\uff08David Rowley\uff09\u00a7", "title": "\u5982\u679c\u5df2\u7ecf\u6309\u6240\u9700\u987a\u5e8f\u626b\u63cf\u5206\u533a\uff0c\u5219\u907f\u514d\u6392\u5e8f", "commits": ["959d00e9d"], "section": "\u670d\u52a1\u5668 / \u5206\u533a", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "06e28fd3911b49ef386a1f44ddc3c3fb65bd70890f5d1b05e5f6a6f5e6374f29", "section_path": ["\u670d\u52a1\u5668", "\u5206\u533a"], "commit_groups": [["959d00e9d"]], "identity_text": "Avoid sorting when partitions are already being scanned in the necessary order (David Rowley)", "commit_aliases": ["959d00e9d"], "source_commits": ["959d00e9d"], "source_entry_id": "12.0/changes/006", "db_id": "9406ac35dc4eff721ab9720b75ffa7f6", "patch_ids": ["cf0f43c35b10097f9d0efdb3d339d788"], "statement_hash": "dc09c9b9f65861e88e9199f134fd514a9f695b63d3acf68e0a52e1380c0eec88", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-b34dacfcc2aaeddc", "migration": false}, {"id": "12.0-b268f07bb46729a2", "cves": [], "html": "<p>\u964d\u4f4e\u6267\u884c <a href=\"/docs/12/sql-altertable.html\" title=\"ALTER TABLE\"><code>ALTER TABLE ATTACH PARTITION</code></a> \u7684\u9501\u5b9a\u8981\u6c42\uff08Robert Haas\uff09<a href=\"https://postgr.es/c/898e5e329\">\u00a7</a></p>", "text": "\u964d\u4f4e\u6267\u884c ALTER TABLE ATTACH PARTITION \u7684\u9501\u5b9a\u8981\u6c42\uff08Robert Haas\uff09\u00a7", "title": "\u964d\u4f4e\u6267\u884c ALTER TABLE ATTACH PARTITION \u7684\u9501\u5b9a\u8981\u6c42", "commits": ["898e5e329"], "section": "\u670d\u52a1\u5668 / \u5206\u533a", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "89d87c212e96ac2528b98a2594cfb2702f8bfafd653f9c172911e9a76495a8f6", "section_path": ["\u670d\u52a1\u5668", "\u5206\u533a"], "commit_groups": [["898e5e329"]], "identity_text": "ALTER TABLE ATTACH PARTITION is now performed with reduced locking requirements (Robert Haas)", "commit_aliases": ["898e5e329"], "source_commits": ["898e5e329"], "source_entry_id": "12.0/changes/007", "db_id": "c7876ec74328b546b5cbb9ae0a076ec7", "patch_ids": ["1ca57819c6f686cc451f6ca042ce24f8"], "statement_hash": "7ed57d30249aed3c1b19d7d4852acbe34bb09bc74b7aad20f71d52de66693119", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-b268f07bb46729a2", "migration": false}, {"id": "12.0-4ff69702a796b2d9", "cves": [], "html": "<p>\u6dfb\u52a0\u5206\u533a\u81ea\u7701\u51fd\u6570\uff08Micha\u00ebl Paquier\uff0c\u00c1lvaro Herrera\uff0cAmit Langote\uff09<a href=\"https://postgr.es/c/3677a0b26\">\u00a7</a> <a href=\"https://postgr.es/c/b96f6b194\">\u00a7</a> <a href=\"https://postgr.es/c/d5eec4eef\">\u00a7</a></p>\n<p>\u65b0\u51fd\u6570 <a href=\"/docs/12/functions-admin.html#FUNCTIONS-INFO-PARTITION\" title=\"\u8868\u00a09.92.\u00a0\u5206\u533a\u4fe1\u606f\u51fd\u6570\"><code>pg_partition_root()</code></a> \u8fd4\u56de\u5206\u533a\u6811\u7684\u6700\u9876\u5c42\u7236\u8868\uff0c<a href=\"/docs/12/functions-admin.html#FUNCTIONS-INFO-PARTITION\" title=\"\u8868\u00a09.92.\u00a0\u5206\u533a\u4fe1\u606f\u51fd\u6570\"><code>pg_partition_ancestors()</code></a> \u62a5\u544a\u5206\u533a\u7684\u6240\u6709\u7956\u5148\uff0c<a href=\"/docs/12/functions-admin.html#FUNCTIONS-INFO-PARTITION\" title=\"\u8868\u00a09.92.\u00a0\u5206\u533a\u4fe1\u606f\u51fd\u6570\"><code>pg_partition_tree()</code></a> \u663e\u793a\u5206\u533a\u4fe1\u606f\u3002</p>", "text": "\u6dfb\u52a0\u5206\u533a\u81ea\u7701\u51fd\u6570\uff08Micha\u00ebl Paquier\uff0c\u00c1lvaro Herrera\uff0cAmit Langote\uff09\u00a7 \u00a7 \u00a7 \u65b0\u51fd\u6570 pg_partition_root() \u8fd4\u56de\u5206\u533a\u6811\u7684\u6700\u9876\u5c42\u7236\u8868\uff0cpg_partition_ancestors() \u62a5\u544a\u5206\u533a\u7684\u6240\u6709\u7956\u5148\uff0cpg_partition_tree() \u663e\u793a\u5206\u533a\u4fe1\u606f\u3002", "title": "\u6dfb\u52a0\u5206\u533a\u81ea\u7701\u51fd\u6570", "commits": ["3677a0b26", "b96f6b194", "d5eec4eef"], "section": "\u670d\u52a1\u5668 / \u5206\u533a", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "b5d8c16fabb06ba0ebd49f066af2010e35c0d14a6202de2c62824dbf2ddc562c", "section_path": ["\u670d\u52a1\u5668", "\u5206\u533a"], "commit_groups": [["3677a0b26"], ["b96f6b194"], ["d5eec4eef"]], "identity_text": "Add partition introspection functions (Micha\u00ebl Paquier, \u00c1lvaro Herrera, Amit Langote) The new function pg_partition_root() returns the top-most parent of a partition tree, pg_partition_ancestors() reports all ancestors of a partition, and pg_partition_tree() displays information about partitions.", "commit_aliases": ["3677a0b26", "b96f6b194", "d5eec4eef"], "source_commits": ["3677a0b26", "b96f6b194", "d5eec4eef"], "source_entry_id": "12.0/changes/008", "db_id": "20d0c868abe847ab2ab1ed0887069fc2", "patch_ids": ["16177465652bb8f9e3ab176e91e45628", "2697bad882413d03ef3347d3b7694ba5", "cdb8e57342a5604ee92b662af392b80c"], "statement_hash": "0d760daf68369413d935d8e263a7db6ac919d4fccb575eeb80065135a0055fa9", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-4ff69702a796b2d9", "migration": false}, {"id": "12.0-37b1b021963e9e74", "cves": [], "html": "<p>\u5728\u7cfb\u7edf\u89c6\u56fe <a href=\"/docs/12/view-pg-indexes.html\" title=\"51.73.\u00a0pg_indexes\"><code>pg_indexes</code></a> \u4e2d\u5305\u542b\u5206\u533a\u7d22\u5f15\uff08Suraj Kharage\uff09<a href=\"https://postgr.es/c/f94cec644\">\u00a7</a></p>", "text": "\u5728\u7cfb\u7edf\u89c6\u56fe pg_indexes \u4e2d\u5305\u542b\u5206\u533a\u7d22\u5f15\uff08Suraj Kharage\uff09\u00a7", "title": "\u5728\u7cfb\u7edf\u89c6\u56fe pg_indexes \u4e2d\u5305\u542b\u5206\u533a\u7d22\u5f15", "commits": ["f94cec644"], "section": "\u670d\u52a1\u5668 / \u5206\u533a", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "967297cfed41156d3e064110c4078fa9c2ec42a4b40e407e581f2ac9793bedf7", "section_path": ["\u670d\u52a1\u5668", "\u5206\u533a"], "commit_groups": [["f94cec644"]], "identity_text": "Include partitioned indexes in the system view pg_indexes (Suraj Kharage)", "commit_aliases": ["f94cec644"], "source_commits": ["f94cec644"], "source_entry_id": "12.0/changes/009", "db_id": "bc37a9ad528d0865433e70962d9f61e2", "patch_ids": ["c09844689bae56f543a801518a5d5d66"], "statement_hash": "dcb72a5518e5b5a514531474c2d8f7d1bea289dd097a04571438b1e116ac2d6b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-37b1b021963e9e74", "migration": false}, {"id": "12.0-79b6ae8c564fa7b2", "cves": [], "html": "<p>\u6dfb\u52a0 <span>psql</span> \u547d\u4ee4 <code>\\dP</code>\uff0c\u7528\u4e8e\u5217\u51fa\u5206\u533a\u8868\u548c\u7d22\u5f15\uff08Pavel Stehule\uff09<a href=\"https://postgr.es/c/1c5d9270e\">\u00a7</a></p>", "text": "\u6dfb\u52a0 psql \u547d\u4ee4 \\dP\uff0c\u7528\u4e8e\u5217\u51fa\u5206\u533a\u8868\u548c\u7d22\u5f15\uff08Pavel Stehule\uff09\u00a7", "title": "\u6dfb\u52a0 psql \u547d\u4ee4 \\dP\uff0c\u7528\u4e8e\u5217\u51fa\u5206\u533a\u8868\u548c\u7d22\u5f15", "commits": ["1c5d9270e"], "section": "\u670d\u52a1\u5668 / \u5206\u533a", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "c27ab79908e1951ab1c18fd869d0181d30cdfbb838c801e5f5b2468488b9faab", "section_path": ["\u670d\u52a1\u5668", "\u5206\u533a"], "commit_groups": [["1c5d9270e"]], "identity_text": "Add psql command \\dP to list partitioned tables and indexes (Pavel Stehule)", "commit_aliases": ["1c5d9270e"], "source_commits": ["1c5d9270e"], "source_entry_id": "12.0/changes/010", "db_id": "03741015359004ff63475dc697c48b83", "patch_ids": ["2c4b62d635cc35475b8930b5eca05678"], "statement_hash": "266efd38e289649cc75280e341823f93f5a3b6751a70a60a764c7c664a9870f6", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-79b6ae8c564fa7b2", "migration": false}, {"id": "12.0-4439ab33417df540", "cves": [], "html": "<p>\u6539\u8fdb <span>psql</span> \u7684 <code>\\d</code> \u548c <code>\\z</code> \u5bf9\u5206\u533a\u8868\u7684\u663e\u793a\uff08Pavel Stehule\uff0cMicha\u00ebl Paquier\uff0c\u00c1lvaro Herrera\uff09<a href=\"https://postgr.es/c/d56e0fde8\">\u00a7</a> <a href=\"https://postgr.es/c/1af25ca0c\">\u00a7</a> <a href=\"https://postgr.es/c/b036982db\">\u00a7</a></p>", "text": "\u6539\u8fdb psql \u7684 \\d \u548c \\z \u5bf9\u5206\u533a\u8868\u7684\u663e\u793a\uff08Pavel Stehule\uff0cMicha\u00ebl Paquier\uff0c\u00c1lvaro Herrera\uff09\u00a7 \u00a7 \u00a7", "title": "\u6539\u8fdb psql \u7684 \\d \u548c \\z \u5bf9\u5206\u533a\u8868\u7684\u663e\u793a", "commits": ["1af25ca0c", "b036982db", "d56e0fde8"], "section": "\u670d\u52a1\u5668 / \u5206\u533a", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "fb915387556b260db952796dbbec8c9f52c95e514025423befc8da05944eb290", "section_path": ["\u670d\u52a1\u5668", "\u5206\u533a"], "commit_groups": [["1af25ca0c"], ["b036982db"], ["d56e0fde8"]], "identity_text": "Improve psql \\d and \\z display of partitioned tables (Pavel Stehule, Micha\u00ebl Paquier, \u00c1lvaro Herrera)", "commit_aliases": ["1af25ca0c", "b036982db", "d56e0fde8"], "source_commits": ["1af25ca0c", "b036982db", "d56e0fde8"], "source_entry_id": "12.0/changes/011", "db_id": "2b00618c729d35c3596f2b349bf93b1d", "patch_ids": ["0d7bcefe2ae2148af8dd0ce2d61a257a", "1b3e55203cb8e7f656a2c2b7d9d70883", "51a4f712d02995a519eb362242171aad"], "statement_hash": "07ddc2d49b8cd88fe0c3d447ad82daad2c3fe6b1d38b7a9f137c3b6dc81b1418", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-4439ab33417df540", "migration": false}, {"id": "12.0-37d5bddae7e522f8", "cves": [], "html": "<p>\u4fee\u590d\u53ef\u80fd\u5bfc\u81f4 <code>ALTER TABLE DETACH PARTITION</code> \u7559\u4e0b\u4e0d\u6b63\u786e\u4f9d\u8d56\u72b6\u6001\u7684\u7f3a\u9677\uff1b\u8fd9\u53ef\u80fd\u4f7f\u540e\u7eed\u64cd\u4f5c\u884c\u4e3a\u5f02\u5e38\uff0c\u4f8b\u5982\u5728\u5220\u9664\u8868\u65f6\u672a\u5220\u9664\u66fe\u5c5e\u4e8e\u5206\u533a\u7684\u5b50\u7d22\u5f15\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/1d92a0c9f\">\u00a7</a></p>", "text": "\u4fee\u590d\u53ef\u80fd\u5bfc\u81f4 ALTER TABLE DETACH PARTITION \u7559\u4e0b\u4e0d\u6b63\u786e\u4f9d\u8d56\u72b6\u6001\u7684\u7f3a\u9677\uff1b\u8fd9\u53ef\u80fd\u4f7f\u540e\u7eed\u64cd\u4f5c\u884c\u4e3a\u5f02\u5e38\uff0c\u4f8b\u5982\u5728\u5220\u9664\u8868\u65f6\u672a\u5220\u9664\u66fe\u5c5e\u4e8e\u5206\u533a\u7684\u5b50\u7d22\u5f15\uff08Tom Lane\uff09\u00a7", "title": "\u4fee\u590d\u53ef\u80fd\u5bfc\u81f4 ALTER TABLE DETACH PARTITION \u7559\u4e0b\u4e0d\u6b63\u786e\u4f9d\u8d56\u72b6\u6001\u7684\u7f3a\u9677\uff1b\u8fd9\u53ef\u80fd\u4f7f\u540e\u7eed\u64cd\u4f5c\u884c\u4e3a\u5f02\u5e38\uff0c\u4f8b\u5982\u5728\u5220\u9664\u8868\u65f6\u672a\u5220\u9664\u66fe\u5c5e\u4e8e\u5206\u533a\u7684\u5b50\u7d22\u5f15", "commits": ["1d92a0c9f"], "section": "\u670d\u52a1\u5668 / \u5206\u533a", "category": "bugfix", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.2", "source_hash": "a6d2e891579f6ee40639ffa61edc02cf66faafd1360b509017fd8a22ca1ecad2", "section_path": ["\u670d\u52a1\u5668", "\u5206\u533a"], "commit_groups": [["1d92a0c9f"]], "identity_text": "Fix bugs that could cause ALTER TABLE DETACH PARTITION to leave behind incorrect dependency state, allowing subsequent operations to misbehave, for example by not dropping a former partition child index when its table is dropped (Tom Lane)", "commit_aliases": ["1d92a0c9f"], "source_commits": ["1d92a0c9f"], "source_entry_id": "12.0/changes/012", "db_id": "2942001e60ae520dec7c60cdca0ef3cf", "patch_ids": ["a4dd9a6ba3018f8aa1dd4a2d2d7b6f9a"], "statement_hash": "655b1a19df2a2f287ed07ed7af55180594219eec7cfa7f802d875e40198f6117", "relations": [], "category_label": "BUG \u4fee\u590d", "url": "/docs/compare/?release=12.0#12.0-37d5bddae7e522f8", "migration": false}, {"id": "12.0-9987a84ca00e9d8b", "cves": [], "html": "<p>\u63d0\u9ad8\u5177\u6709\u5927\u91cf\u91cd\u590d\u503c\u7684 B-\u6811\u7d22\u5f15\u7684\u6027\u80fd\u548c\u7a7a\u95f4\u5229\u7528\u7387\uff08Peter Geoghegan\uff0cHeikki Linnakangas\uff09<a href=\"https://postgr.es/c/dd299df81\">\u00a7</a> <a href=\"https://postgr.es/c/fab250243\">\u00a7</a> <a href=\"https://postgr.es/c/f21668f32\">\u00a7</a></p>\n<p>\u4ee5\u524d\uff0c\u91cd\u590d\u7d22\u5f15\u6761\u76ee\u5728\u5176\u91cd\u590d\u503c\u7ec4\u5185\u65e0\u5e8f\u5b58\u50a8\u3002\u8fd9\u4f1a\u589e\u52a0\u7d22\u5f15\u63d2\u5165\u7684\u5f00\u9500\uff0c\u56e0\u8fc7\u591a\u7684\u9875\u9762\u5206\u88c2\u6d6a\u8d39\u7a7a\u95f4\uff0c\u5e76\u964d\u4f4e <code>VACUUM</code> \u56de\u6536\u6574\u4e2a\u9875\u9762\u7684\u80fd\u529b\u3002\u73b0\u5728\uff0c\u91cd\u590d\u7d22\u5f15\u6761\u76ee\u6309\u5806\u5b58\u50a8\u987a\u5e8f\u6392\u5e8f\u3002</p>\n<p>\u901a\u8fc7 <span>pg_upgrade</span> \u4ece\u4ee5\u524d\u7248\u672c\u5347\u7ea7\u800c\u6765\u7684\u7d22\u5f15\u65e0\u6cd5\u83b7\u5f97\u8fd9\u4e9b\u597d\u5904\u3002</p>", "text": "\u63d0\u9ad8\u5177\u6709\u5927\u91cf\u91cd\u590d\u503c\u7684 B-\u6811\u7d22\u5f15\u7684\u6027\u80fd\u548c\u7a7a\u95f4\u5229\u7528\u7387\uff08Peter Geoghegan\uff0cHeikki Linnakangas\uff09\u00a7 \u00a7 \u00a7 \u4ee5\u524d\uff0c\u91cd\u590d\u7d22\u5f15\u6761\u76ee\u5728\u5176\u91cd\u590d\u503c\u7ec4\u5185\u65e0\u5e8f\u5b58\u50a8\u3002\u8fd9\u4f1a\u589e\u52a0\u7d22\u5f15\u63d2\u5165\u7684\u5f00\u9500\uff0c\u56e0\u8fc7\u591a\u7684\u9875\u9762\u5206\u88c2\u6d6a\u8d39\u7a7a\u95f4\uff0c\u5e76\u964d\u4f4e VACUUM \u56de\u6536\u6574\u4e2a\u9875\u9762\u7684\u80fd\u529b\u3002\u73b0\u5728\uff0c\u91cd\u590d\u7d22\u5f15\u6761\u76ee\u6309\u5806\u5b58\u50a8\u987a\u5e8f\u6392\u5e8f\u3002 \u901a\u8fc7 pg_upgrade \u4ece\u4ee5\u524d\u7248\u672c\u5347\u7ea7\u800c\u6765\u7684\u7d22\u5f15\u65e0\u6cd5\u83b7\u5f97\u8fd9\u4e9b\u597d\u5904\u3002", "title": "\u63d0\u9ad8\u5177\u6709\u5927\u91cf\u91cd\u590d\u503c\u7684 B-\u6811\u7d22\u5f15\u7684\u6027\u80fd\u548c\u7a7a\u95f4\u5229\u7528\u7387", "commits": ["dd299df81", "f21668f32", "fab250243"], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "685eead1815bb64ca924e6004d6aaefea1f76268800fa8d8fee238a90cdaa279", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["dd299df81"], ["f21668f32"], ["fab250243"]], "identity_text": "Improve performance and space utilization of btree indexes with many duplicates (Peter Geoghegan, Heikki Linnakangas) Previously, duplicate index entries were stored unordered within their duplicate groups. This caused overhead during index inserts, wasted space due to excessive page splits, and it reduced VACUUM's ability to recycle entire pages. Duplicate index entries are now sorted in heap-storage order. Indexes pg_upgrade'd from previous releases will not have these benefits.", "commit_aliases": ["dd299df81", "f21668f32", "fab250243"], "source_commits": ["dd299df81", "f21668f32", "fab250243"], "source_entry_id": "12.0/changes/013", "db_id": "aad8107f07f86f1bde08c4fc057e36e3", "patch_ids": ["85a8c76618f80c5f1eee244def8a9fdd", "a43ca6400105f4870998ecb53a5cd53b", "ed56a1e3c61b4125c20e891d4303c11c"], "statement_hash": "0b7aacb6e0432d75062bcd11f568cdaa5bbbc71aca161234b6f0cbfea6318e1f", "relations": [{"rule": 2, "type": "related", "target": "77c2078559927cb4722625ff14b67cfd", "evidence": {"same_day": true, "patch_ids": ["a43ca6400105f4870998ecb53a5cd53b"]}}], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-9987a84ca00e9d8b", "migration": false}, {"id": "12.0-c365cb484a2d5291", "cves": [], "html": "<p>\u5141\u8bb8\u591a\u5217 B-\u6811\u7d22\u5f15\u5360\u7528\u66f4\u5c11\u7a7a\u95f4\uff08Peter Geoghegan\uff0cHeikki Linnakangas\uff09</p>\n<p>\u5185\u90e8\u9875\u9762\u548c\u53f6\u5b50\u9875\u9762\u7684\u6700\u5c0f/\u6700\u5927\u503c\u6307\u793a\u9879\u73b0\u5728\u53ea\u5b58\u50a8\u5230\u53d1\u751f\u5dee\u5f02\u7684\u952e\u4e3a\u6b62\u7684\u7d22\u5f15\u952e\uff0c\u800c\u975e\u5168\u90e8\u7d22\u5f15\u952e\u3002\u8fd9\u4e5f\u63d0\u9ad8\u4e86\u7d22\u5f15\u8bbf\u95ee\u7684\u5c40\u90e8\u6027\u3002</p>\n<p>\u901a\u8fc7 <span>pg_upgrade</span> \u4ece\u4ee5\u524d\u7248\u672c\u5347\u7ea7\u800c\u6765\u7684\u7d22\u5f15\u65e0\u6cd5\u83b7\u5f97\u8fd9\u4e9b\u597d\u5904\u3002</p>", "text": "\u5141\u8bb8\u591a\u5217 B-\u6811\u7d22\u5f15\u5360\u7528\u66f4\u5c11\u7a7a\u95f4\uff08Peter Geoghegan\uff0cHeikki Linnakangas\uff09 \u5185\u90e8\u9875\u9762\u548c\u53f6\u5b50\u9875\u9762\u7684\u6700\u5c0f/\u6700\u5927\u503c\u6307\u793a\u9879\u73b0\u5728\u53ea\u5b58\u50a8\u5230\u53d1\u751f\u5dee\u5f02\u7684\u952e\u4e3a\u6b62\u7684\u7d22\u5f15\u952e\uff0c\u800c\u975e\u5168\u90e8\u7d22\u5f15\u952e\u3002\u8fd9\u4e5f\u63d0\u9ad8\u4e86\u7d22\u5f15\u8bbf\u95ee\u7684\u5c40\u90e8\u6027\u3002 \u901a\u8fc7 pg_upgrade \u4ece\u4ee5\u524d\u7248\u672c\u5347\u7ea7\u800c\u6765\u7684\u7d22\u5f15\u65e0\u6cd5\u83b7\u5f97\u8fd9\u4e9b\u597d\u5904\u3002", "title": "\u5141\u8bb8\u591a\u5217 B-\u6811\u7d22\u5f15\u5360\u7528\u66f4\u5c11\u7a7a\u95f4", "commits": [], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "88074d8435583bb781612fa7f0d3755982ed663a0b8be8daec4c569ca73335b4", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [], "identity_text": "Allow multi-column btree indexes to be smaller (Peter Geoghegan, Heikki Linnakangas) Internal pages and min/max leaf page indicators now only store index keys until the change key, rather than all indexed keys. This also improves the locality of index access. Indexes pg_upgrade'd from previous releases will not have these benefits.", "commit_aliases": [], "source_commits": [], "source_entry_id": "12.0/changes/014", "db_id": "febc620a9d8923e8519db7b4c8d2513d", "patch_ids": [], "statement_hash": "945f2f328d9f7f9fe10bf3f38a4c20893a17375016a00641667bc4cb02518c87", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-c365cb484a2d5291", "migration": false}, {"id": "12.0-0d8135e7ae59b491", "cves": [], "html": "<p>\u901a\u8fc7\u51cf\u5c11\u9501\u5b9a\u5f00\u9500\u63d0\u9ad8 B-\u6811\u7d22\u5f15\u63d2\u5165\u901f\u5ea6\uff08Alexander Korotkov\uff09<a href=\"https://postgr.es/c/d2086b08b\">\u00a7</a></p>", "text": "\u901a\u8fc7\u51cf\u5c11\u9501\u5b9a\u5f00\u9500\u63d0\u9ad8 B-\u6811\u7d22\u5f15\u63d2\u5165\u901f\u5ea6\uff08Alexander Korotkov\uff09\u00a7", "title": "\u901a\u8fc7\u51cf\u5c11\u9501\u5b9a\u5f00\u9500\u63d0\u9ad8 B-\u6811\u7d22\u5f15\u63d2\u5165\u901f\u5ea6", "commits": ["d2086b08b"], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "7df3f8c57c9bc25914f042b3f8fa3c23bdd990902259ab97c4b249aa8eebef47", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["d2086b08b"]], "identity_text": "Improve speed of btree index insertions by reducing locking overhead (Alexander Korotkov)", "commit_aliases": ["d2086b08b"], "source_commits": ["d2086b08b"], "source_entry_id": "12.0/changes/015", "db_id": "f913a009f14c2b5c68bbd1ff90eca686", "patch_ids": ["00f74afaf602ae42ee2dd4ac23b7921f"], "statement_hash": "b2e7b1a40f4862e0b9597e74396fc445d27e7202a178016b5dec2d42b518a849", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-0d8135e7ae59b491", "migration": false}, {"id": "12.0-ec81d3c387ba1bf1", "cves": [], "html": "<p>\u5728 <a href=\"/docs/12/gist.html\" title=\"\u7b2c\u00a064\u00a0\u7ae0\u00a0GiST \u7d22\u5f15\">GiST</a> \u7d22\u5f15\u4e2d\u652f\u6301 <a href=\"/docs/12/indexes-index-only-scans.html\" title=\"11.9.\u00a0\u4ec5\u7d22\u5f15\u626b\u63cf\u548c\u8986\u76d6\u7d22\u5f15\"><code>INCLUDE</code></a> \u5217\uff08Andrey Borodin\uff09<a href=\"https://postgr.es/c/f2e403803\">\u00a7</a></p>", "text": "\u5728 GiST \u7d22\u5f15\u4e2d\u652f\u6301 INCLUDE \u5217\uff08Andrey Borodin\uff09\u00a7", "title": "\u5728 GiST \u7d22\u5f15\u4e2d\u652f\u6301 INCLUDE \u5217", "commits": ["f2e403803"], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "ec0799d17654b650f48d9fbbc8c1869a357245ac069b0feaae4449b21d6ec7ff", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["f2e403803"]], "identity_text": "Support INCLUDE columns in GiST indexes (Andrey Borodin)", "commit_aliases": ["f2e403803"], "source_commits": ["f2e403803"], "source_entry_id": "12.0/changes/016", "db_id": "3434d836c565be0646498f6dd54a8a7a", "patch_ids": ["f38f1cd5af1cac168a6e9e2eb96f14cb"], "statement_hash": "6b8aa813a75055b01a4e2d2c64220c12f5cfc612ab19666345f1659b77ec702d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-ec81d3c387ba1bf1", "migration": false}, {"id": "12.0-fe31136ef79c1bac", "cves": [], "html": "<p>\u6dfb\u52a0\u5bf9 <a href=\"/docs/12/spgist.html\" title=\"\u7b2c\u00a065\u00a0\u7ae0\u00a0SP-GiST \u7d22\u5f15\">SP-GiST</a> \u7d22\u5f15\u7684\u6700\u8fd1\u90bb\uff08<acronym>KNN</acronym>\uff09\u641c\u7d22\u7684\u652f\u6301\uff08Nikita Glukhov\uff0cAlexander Korotkov\uff0cVlad Sterzhanov\uff09<a href=\"https://postgr.es/c/2a6368343\">\u00a7</a></p>", "text": "\u6dfb\u52a0\u5bf9 SP-GiST \u7d22\u5f15\u7684\u6700\u8fd1\u90bb\uff08KNN\uff09\u641c\u7d22\u7684\u652f\u6301\uff08Nikita Glukhov\uff0cAlexander Korotkov\uff0cVlad Sterzhanov\uff09\u00a7", "title": "\u6dfb\u52a0\u5bf9 SP-GiST \u7d22\u5f15\u7684\u6700\u8fd1\u90bb\uff08KNN\uff09\u641c\u7d22\u7684\u652f\u6301", "commits": ["2a6368343"], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "0883604b6369fdcfd4018f37a81163c5139b14f1608f4db27b47d6a5d6889376", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["2a6368343"]], "identity_text": "Add support for nearest-neighbor (KNN) searches of SP-GiST indexes (Nikita Glukhov, Alexander Korotkov, Vlad Sterzhanov)", "commit_aliases": ["2a6368343"], "source_commits": ["2a6368343"], "source_entry_id": "12.0/changes/017", "db_id": "e38729ac249ed7e4685d9cdf4d058498", "patch_ids": ["addbebe0c558edb6f25985ef77d43dc1"], "statement_hash": "8672620a55db45e020d78a960e212867fdb6f9e013ded61a2406263ccb7705c5", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-fe31136ef79c1bac", "migration": false}, {"id": "12.0-b761d33d077a0244", "cves": [], "html": "<p>\u51cf\u5c11\u521b\u5efa <acronym>GiST</acronym>\u3001<acronym>GIN</acronym> \u548c <acronym>SP-GiST</acronym> \u7d22\u5f15\u65f6\u7684 <acronym>WAL</acronym> \u5199\u5165\u5f00\u9500\uff08Anastasia Lubennikova\uff0cAndrey V. Lepikhov\uff09<a href=\"https://postgr.es/c/9155580fd\">\u00a7</a></p>", "text": "\u51cf\u5c11\u521b\u5efa GiST\u3001GIN \u548c SP-GiST \u7d22\u5f15\u65f6\u7684 WAL \u5199\u5165\u5f00\u9500\uff08Anastasia Lubennikova\uff0cAndrey V. Lepikhov\uff09\u00a7", "title": "\u51cf\u5c11\u521b\u5efa GiST\u3001GIN \u548c SP-GiST \u7d22\u5f15\u65f6\u7684 WAL \u5199\u5165\u5f00\u9500", "commits": ["9155580fd"], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "d9a7213147fda6bb25d5eaa52cda47fb2efab15a8f719412b5165fc44eccddd8", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["9155580fd"]], "identity_text": "Reduce the WAL write overhead of GiST, GIN, and SP-GiST index creation (Anastasia Lubennikova, Andrey V. Lepikhov)", "commit_aliases": ["9155580fd"], "source_commits": ["9155580fd"], "source_entry_id": "12.0/changes/018", "db_id": "b8352e6c1c9a48265deabde4e4be6e73", "patch_ids": ["201e3b512328b791c3d56b0100102cc6"], "statement_hash": "bf791e880157c1771c9f911fd73ac2ba0e40997d250985818b87a31f41178bb7", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-b761d33d077a0244", "migration": false}, {"id": "12.0-f1519faf24953ad4", "cves": [], "html": "<p>\u63d0\u9ad8\u591a\u5217\u7d22\u5f15\u4e0a\u4ec5\u7d22\u5f15\u626b\u63cf\u7684\u6548\u7387\uff08Konstantin Knizhnik\uff09<a href=\"https://postgr.es/c/80b9e9c46\">\u00a7</a></p>", "text": "\u63d0\u9ad8\u591a\u5217\u7d22\u5f15\u4e0a\u4ec5\u7d22\u5f15\u626b\u63cf\u7684\u6548\u7387\uff08Konstantin Knizhnik\uff09\u00a7", "title": "\u63d0\u9ad8\u591a\u5217\u7d22\u5f15\u4e0a\u4ec5\u7d22\u5f15\u626b\u63cf\u7684\u6548\u7387", "commits": ["80b9e9c46"], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "4f9b95f7369737303b5e0dcc6f374dc5522698367d016503f494445f6276bdbb", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["80b9e9c46"]], "identity_text": "Allow index-only scans to be more efficient on indexes with many columns (Konstantin Knizhnik)", "commit_aliases": ["80b9e9c46"], "source_commits": ["80b9e9c46"], "source_entry_id": "12.0/changes/019", "db_id": "5fc3539a93301992cd275b231da180c0", "patch_ids": ["a6f94adad565b76f3b27fc3f97c5f331"], "statement_hash": "b3f81b7bcee4c308b9b854b3a7355969932a9c097843d2e1a2b94e117a64bde9", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-f1519faf24953ad4", "migration": false}, {"id": "12.0-b4d55c15f185d255", "cves": [], "html": "<p>\u63d0\u9ad8 GiST \u7d22\u5f15\u6e05\u7406\u626b\u63cf\u7684\u6027\u80fd\uff08Andrey Borodin\uff0cKonstantin Kuznetsov\uff0cHeikki Linnakangas\uff09<a href=\"https://postgr.es/c/fe280694d\">\u00a7</a></p>", "text": "\u63d0\u9ad8 GiST \u7d22\u5f15\u6e05\u7406\u626b\u63cf\u7684\u6027\u80fd\uff08Andrey Borodin\uff0cKonstantin Kuznetsov\uff0cHeikki Linnakangas\uff09\u00a7", "title": "\u63d0\u9ad8 GiST \u7d22\u5f15\u6e05\u7406\u626b\u63cf\u7684\u6027\u80fd", "commits": ["fe280694d"], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "cee39bf0b964ca64548470ec6a50abc9f33ac865f1f6b46d392c0e2569b6e316", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["fe280694d"]], "identity_text": "Improve the performance of vacuum scans of GiST indexes (Andrey Borodin, Konstantin Kuznetsov, Heikki Linnakangas)", "commit_aliases": ["fe280694d"], "source_commits": ["fe280694d"], "source_entry_id": "12.0/changes/020", "db_id": "c466c7b597b17fa85b2e4e74409cdcda", "patch_ids": ["fce11426b6051be4ef4b96ea2913758a"], "statement_hash": "ecddb39ba69c61ba1ee85d16a7ef82971338e35bfbd675638c7d797721fce445", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-b4d55c15f185d255", "migration": false}, {"id": "12.0-f917f27ed4c8e0be", "cves": [], "html": "<p>\u5728 <acronym>GiST</acronym> <code>VACUUM</code> \u671f\u95f4\u5220\u9664\u7a7a\u7684\u53f6\u5b50\u9875\u9762\uff08Andrey Borodin\uff09<a href=\"https://postgr.es/c/7df159a62\">\u00a7</a></p>", "text": "\u5728 GiST VACUUM \u671f\u95f4\u5220\u9664\u7a7a\u7684\u53f6\u5b50\u9875\u9762\uff08Andrey Borodin\uff09\u00a7", "title": "\u5728 GiST VACUUM \u671f\u95f4\u5220\u9664\u7a7a\u7684\u53f6\u5b50\u9875\u9762", "commits": ["7df159a62"], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "db09263be6e06b835af59796a5779f1067a500e91d9237e8f2ba8c0914c84613", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["7df159a62"]], "identity_text": "Delete empty leaf pages during GiST VACUUM (Andrey Borodin)", "commit_aliases": ["7df159a62"], "source_commits": ["7df159a62"], "source_entry_id": "12.0/changes/021", "db_id": "aed90004deac754591a2ddbfe319700d", "patch_ids": ["409cff2412cdc64c45ca8be787860be3"], "statement_hash": "f6d4558c73c003f94076f6756b8fb67d5346eafe50fa4351769e616cb162c456", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-f917f27ed4c8e0be", "migration": false}, {"id": "12.0-e5d7fe27b17615ce", "cves": [], "html": "<p>\u964d\u4f4e\u7d22\u5f15\u91cd\u547d\u540d\u7684\u9501\u5b9a\u8981\u6c42\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/1b5d797cd\">\u00a7</a></p>", "text": "\u964d\u4f4e\u7d22\u5f15\u91cd\u547d\u540d\u7684\u9501\u5b9a\u8981\u6c42\uff08Peter Eisentraut\uff09\u00a7", "title": "\u964d\u4f4e\u7d22\u5f15\u91cd\u547d\u540d\u7684\u9501\u5b9a\u8981\u6c42", "commits": ["1b5d797cd"], "section": "\u670d\u52a1\u5668 / \u7d22\u5f15", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.3", "source_hash": "0441d4a1a120f5ecbf07374309d4d863771fb46bfd2ecfaaf9159911edf8743b", "section_path": ["\u670d\u52a1\u5668", "\u7d22\u5f15"], "commit_groups": [["1b5d797cd"]], "identity_text": "Reduce locking requirements for index renaming (Peter Eisentraut)", "commit_aliases": ["1b5d797cd"], "source_commits": ["1b5d797cd"], "source_entry_id": "12.0/changes/022", "db_id": "021e92f4216a435c67b49edb3dc4b791", "patch_ids": ["f90e6e16c1849a8e5a2b49fb1daa6011"], "statement_hash": "9509174906273189c8555c5257b31686d3ac80459ef20d193146723807f0dfac", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-e5d7fe27b17615ce", "migration": false}, {"id": "12.0-4d844511f83d26be", "cves": [], "html": "<p>\u5141\u8bb8<a href=\"/docs/12/sql-createstatistics.html\" title=\"CREATE STATISTICS\"><span>CREATE STATISTICS</span></a>\u521b\u5efa\u591a\u5217\u6700\u5e38\u89c1\u503c\u7edf\u8ba1\u4fe1\u606f\uff08Tomas Vondra\uff09<a href=\"https://postgr.es/c/7300a6995\">\u00a7</a> <a href=\"https://postgr.es/c/a63b29a1d\">\u00a7</a></p>\n<p>\u8fd9\u6539\u8fdb\u4e86\u5bf9\u591a\u4e2a\u5217\u8fdb\u884c\u6d4b\u8bd5\u3001\u9700\u8981\u4f30\u7b97\u591a\u4e2a <code>WHERE</code> \u5b50\u53e5\u7efc\u5408\u6548\u679c\u7684\u67e5\u8be2\u7684\u4f18\u5316\u3002\u5982\u679c\u8fd9\u4e9b\u5217\u5f7c\u6b64\u76f8\u5173\u4e14\u5206\u5e03\u4e0d\u5747\u5300\uff0c\u591a\u5217\u7edf\u8ba1\u4fe1\u606f\u5c06\u4f7f\u4f30\u7b97\u663e\u8457\u6539\u5584\u3002</p>", "text": "\u5141\u8bb8CREATE STATISTICS\u521b\u5efa\u591a\u5217\u6700\u5e38\u89c1\u503c\u7edf\u8ba1\u4fe1\u606f\uff08Tomas Vondra\uff09\u00a7 \u00a7 \u8fd9\u6539\u8fdb\u4e86\u5bf9\u591a\u4e2a\u5217\u8fdb\u884c\u6d4b\u8bd5\u3001\u9700\u8981\u4f30\u7b97\u591a\u4e2a WHERE \u5b50\u53e5\u7efc\u5408\u6548\u679c\u7684\u67e5\u8be2\u7684\u4f18\u5316\u3002\u5982\u679c\u8fd9\u4e9b\u5217\u5f7c\u6b64\u76f8\u5173\u4e14\u5206\u5e03\u4e0d\u5747\u5300\uff0c\u591a\u5217\u7edf\u8ba1\u4fe1\u606f\u5c06\u4f7f\u4f30\u7b97\u663e\u8457\u6539\u5584\u3002", "title": "\u5141\u8bb8CREATE STATISTICS\u521b\u5efa\u591a\u5217\u6700\u5e38\u89c1\u503c\u7edf\u8ba1\u4fe1\u606f", "commits": ["7300a6995", "a63b29a1d"], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "f88e2a9059898ed359e193b7bbae216c89b78a61c60cc58c4d7e1a46c8e6b143", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668"], "commit_groups": [["7300a6995"], ["a63b29a1d"]], "identity_text": "Allow sql-createstatistics to create most-common-value statistics for multiple columns (Tomas Vondra) This improves optimization for queries that test several columns, requiring an estimate of the combined effect of several WHERE clauses. If the columns are correlated and have non-uniform distributions then multi-column statistics will allow much better estimates.", "commit_aliases": ["7300a6995", "a63b29a1d"], "source_commits": ["7300a6995", "a63b29a1d"], "source_entry_id": "12.0/changes/023", "db_id": "dd1a7cb20062cb3129dadd4563084837", "patch_ids": ["69173087a656986cbab7b47a2ba5931d", "a59254935ffab55b6d8a1c5c4654417a"], "statement_hash": "64336baf734bd57f511b74fdeb56e9ef1529a63b135ccf4c1620cac65f0828d6", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-4d844511f83d26be", "migration": false}, {"id": "12.0-06e8293800bad8a4", "cves": [], "html": "<p>\u5141\u8bb8\u5c06<a href=\"/docs/12/queries-with.html\" title=\"7.8.\u00a0WITH\u67e5\u8be2\uff08\u516c\u5171\u8868\u8868\u8fbe\u5f0f\uff09\">\u516c\u5171\u8868\u8868\u8fbe\u5f0f</a>\uff08<acronym>CTEs</acronym>\uff09\u5185\u8054\u5230\u5916\u5c42\u67e5\u8be2\u4e2d\uff08Andreas Karlsson\uff0cAndrew Gierth\uff0cDavid Fetter\uff0cTom Lane\uff09<a href=\"https://postgr.es/c/608b167f9\">\u00a7</a> <a href=\"https://postgr.es/c/947613127\">\u00a7</a></p>\n<p>\u5177\u4f53\u800c\u8a00\uff0c\u5982\u679c <acronym>CTE</acronym> \u6ca1\u6709\u526f\u4f5c\u7528\u3001\u4e0d\u662f\u9012\u5f52\u7684\uff0c\u4e14\u5728\u67e5\u8be2\u4e2d\u53ea\u88ab\u5f15\u7528\u4e00\u6b21\uff0c\u5c31\u4f1a\u88ab\u81ea\u52a8\u5185\u8054\u3002\u53ef\u4ee5\u6307\u5b9a <code>MATERIALIZED</code> \u6765\u963b\u6b62\u5185\u8054\uff0c\u4e5f\u53ef\u4ee5\u6307\u5b9a <code>NOT MATERIALIZED</code>\uff0c\u5f3a\u5236\u5185\u8054\u88ab\u591a\u6b21\u5f15\u7528\u7684 <acronym>CTE</acronym>\u3002\u4ee5\u524d\uff0c<acronym>CTE</acronym> \u4ece\u4e0d\u88ab\u5185\u8054\uff0c\u603b\u662f\u5728\u67e5\u8be2\u5176\u4f59\u90e8\u5206\u4e4b\u524d\u6c42\u503c\u3002</p>", "text": "\u5141\u8bb8\u5c06\u516c\u5171\u8868\u8868\u8fbe\u5f0f\uff08CTEs\uff09\u5185\u8054\u5230\u5916\u5c42\u67e5\u8be2\u4e2d\uff08Andreas Karlsson\uff0cAndrew Gierth\uff0cDavid Fetter\uff0cTom Lane\uff09\u00a7 \u00a7 \u5177\u4f53\u800c\u8a00\uff0c\u5982\u679c CTE \u6ca1\u6709\u526f\u4f5c\u7528\u3001\u4e0d\u662f\u9012\u5f52\u7684\uff0c\u4e14\u5728\u67e5\u8be2\u4e2d\u53ea\u88ab\u5f15\u7528\u4e00\u6b21\uff0c\u5c31\u4f1a\u88ab\u81ea\u52a8\u5185\u8054\u3002\u53ef\u4ee5\u6307\u5b9a MATERIALIZED \u6765\u963b\u6b62\u5185\u8054\uff0c\u4e5f\u53ef\u4ee5\u6307\u5b9a NOT MATERIALIZED\uff0c\u5f3a\u5236\u5185\u8054\u88ab\u591a\u6b21\u5f15\u7528\u7684 CTE\u3002\u4ee5\u524d\uff0cCTE \u4ece\u4e0d\u88ab\u5185\u8054\uff0c\u603b\u662f\u5728\u67e5\u8be2\u5176\u4f59\u90e8\u5206\u4e4b\u524d\u6c42\u503c\u3002", "title": "\u5141\u8bb8\u5c06\u516c\u5171\u8868\u8868\u8fbe\u5f0f\uff08CTEs\uff09\u5185\u8054\u5230\u5916\u5c42\u67e5\u8be2\u4e2d", "commits": ["608b167f9", "947613127"], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "c2aad0d78fa5f31cf4232cfd5835e9779fdddf2616a878ebeeea2561e996e7e7", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668"], "commit_groups": [["608b167f9"], ["947613127"]], "identity_text": "Allow common table expressions (CTEs) to be inlined into the outer query (Andreas Karlsson, Andrew Gierth, David Fetter, Tom Lane) Specifically, CTEs are automatically inlined if they have no side-effects, are not recursive, and are referenced only once in the query. Inlining can be prevented by specifying MATERIALIZED, or forced for multiply-referenced CTEs by specifying NOT MATERIALIZED. Previously, CTEs were never inlined and were always evaluated before the rest of the query.", "commit_aliases": ["608b167f9", "947613127"], "source_commits": ["608b167f9", "947613127"], "source_entry_id": "12.0/changes/024", "db_id": "3b2b648a4fe094ff5ab95bc5a0b2d5b5", "patch_ids": ["0ffd2243a6ca274943647c84a42cad86", "f3e51f75d12a5d3fe164562b8ad715aa"], "statement_hash": "460ab50b58ba006cd75adcc916730d555e1eff072585fd81b92dce18d7a70219", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-06e8293800bad8a4", "migration": false}, {"id": "12.0-72f682d85648b895", "cves": [], "html": "<p>\u5141\u8bb8\u63a7\u5236\u4f55\u65f6\u4e3a\u9884\u5907\u8bed\u53e5\u4f7f\u7528\u901a\u7528\u8ba1\u5212\uff08Pavel Stehule\uff09<a href=\"https://postgr.es/c/f7cb2842b\">\u00a7</a></p>\n<p>\u8fd9\u7531\u670d\u52a1\u5668\u53c2\u6570<a href=\"/docs/12/runtime-config-query.html#GUC-PLAN-CACHE_MODE\">plan_cache_mode</a>\u63a7\u5236\u3002</p>", "text": "\u5141\u8bb8\u63a7\u5236\u4f55\u65f6\u4e3a\u9884\u5907\u8bed\u53e5\u4f7f\u7528\u901a\u7528\u8ba1\u5212\uff08Pavel Stehule\uff09\u00a7 \u8fd9\u7531\u670d\u52a1\u5668\u53c2\u6570plan_cache_mode\u63a7\u5236\u3002", "title": "\u5141\u8bb8\u63a7\u5236\u4f55\u65f6\u4e3a\u9884\u5907\u8bed\u53e5\u4f7f\u7528\u901a\u7528\u8ba1\u5212", "commits": ["f7cb2842b"], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "78d69207c5c4ddc4fa034757909190adb0fda84315b33753ddf7d049b8fb829b", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668"], "commit_groups": [["f7cb2842b"]], "identity_text": "Allow control over when generic plans are used for prepared statements (Pavel Stehule) This is controlled by the guc-plan-cache_mode server parameter.", "commit_aliases": ["f7cb2842b"], "source_commits": ["f7cb2842b"], "source_entry_id": "12.0/changes/025", "db_id": "fcf4663a5bd7cdc2c7200eef1325acdd", "patch_ids": ["d812ae1d63b64715e2ada5dbc6ba532f"], "statement_hash": "6135ac32ba832fb592c95977f5c953badeefa2ec0c805af157eec0aa741c56c7", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-72f682d85648b895", "migration": false}, {"id": "12.0-d7e63f008dfda1ef", "cves": [], "html": "<p>\u6539\u8fdb\u53ea\u6709\u4e00\u4e2a\u5b50\u9879\u7684\u5206\u533a\u67e5\u8be2\u548c <code>UNION ALL</code> \u67e5\u8be2\u7684\u4f18\u5316\uff08David Rowley\uff09<a href=\"https://postgr.es/c/8edd0e794\">\u00a7</a></p>", "text": "\u6539\u8fdb\u53ea\u6709\u4e00\u4e2a\u5b50\u9879\u7684\u5206\u533a\u67e5\u8be2\u548c UNION ALL \u67e5\u8be2\u7684\u4f18\u5316\uff08David Rowley\uff09\u00a7", "title": "\u6539\u8fdb\u53ea\u6709\u4e00\u4e2a\u5b50\u9879\u7684\u5206\u533a\u67e5\u8be2\u548c UNION ALL \u67e5\u8be2\u7684\u4f18\u5316", "commits": ["8edd0e794"], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "80cbbae864d453bee4b26c2a2cb75eaaa9d9bae69fae57b605b3e6f3118a8b77", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668"], "commit_groups": [["8edd0e794"]], "identity_text": "Improve optimization of partition and UNION ALL queries that have only a single child (David Rowley)", "commit_aliases": ["8edd0e794"], "source_commits": ["8edd0e794"], "source_entry_id": "12.0/changes/026", "db_id": "c0cee280bec5794aa93d80dfb19fca39", "patch_ids": ["2a79321fd491ca2ed7bc9d6955f0c29b"], "statement_hash": "5ade77de75bb972230bdd2b1abe78f2ca10fd9ac6bb022895cd8a88a3e4ba0aa", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d7e63f008dfda1ef", "migration": false}, {"id": "12.0-752e289182cca64a", "cves": [], "html": "<p>\u6539\u8fdb\u5bf9\u6ca1\u6709\u68c0\u67e5\u7ea6\u675f\u7684<a href=\"/docs/12/domains.html\" title=\"8.18.\u00a0\u57df\u7c7b\u578b\">\u57df</a>\u7684\u5904\u7406\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/04fe805a1\">\u00a7</a></p>\n<p>\u4ec5\u7528\u4f5c\u7c7b\u578b\u522b\u540d\u7684\u57df\u4e0d\u518d\u7ed9\u4f18\u5316\u5e26\u6765\u56f0\u96be\u3002</p>", "text": "\u6539\u8fdb\u5bf9\u6ca1\u6709\u68c0\u67e5\u7ea6\u675f\u7684\u57df\u7684\u5904\u7406\uff08Tom Lane\uff09\u00a7 \u4ec5\u7528\u4f5c\u7c7b\u578b\u522b\u540d\u7684\u57df\u4e0d\u518d\u7ed9\u4f18\u5316\u5e26\u6765\u56f0\u96be\u3002", "title": "\u6539\u8fdb\u5bf9\u6ca1\u6709\u68c0\u67e5\u7ea6\u675f\u7684\u57df\u7684\u5904\u7406", "commits": ["04fe805a1"], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "c2992d40a51f4bb2edaf8acf6341e3f915897670c4b70f62cd0080f3575864ff", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668"], "commit_groups": [["04fe805a1"]], "identity_text": "Improve processing of domains that have no check constraints (Tom Lane) Domains that are being used purely as type aliases no longer cause optimization difficulties.", "commit_aliases": ["04fe805a1"], "source_commits": ["04fe805a1"], "source_entry_id": "12.0/changes/027", "db_id": "3184dba624b44db8c4081e9def17fc7e", "patch_ids": ["fbf4e7132eeacd38f75837c6cba8e205"], "statement_hash": "912f88c218058c3cc88394bbd7c9805e22b442b8945b9795e0ed4e6ab0ac21b5", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-752e289182cca64a", "migration": false}, {"id": "12.0-4dcd7e7b2f274499", "cves": [], "html": "<p>\u5f53\u53c2\u6570\u4e3a\u5e38\u91cf\u65f6\uff0c\u9884\u5148\u8ba1\u7b97 <a href=\"/docs/12/functions-conditional.html#FUNCTIONS-GREATEST-LEAST\" title=\"9.17.4.\u00a0GREATEST\u548cLEAST\"><code>LEAST</code></a> \u548c <code>GREATEST</code> \u8c03\u7528\uff08Vik Fearing\uff09<a href=\"https://postgr.es/c/6f19a8c41\">\u00a7</a></p>", "text": "\u5f53\u53c2\u6570\u4e3a\u5e38\u91cf\u65f6\uff0c\u9884\u5148\u8ba1\u7b97 LEAST \u548c GREATEST \u8c03\u7528\uff08Vik Fearing\uff09\u00a7", "title": "\u5f53\u53c2\u6570\u4e3a\u5e38\u91cf\u65f6\uff0c\u9884\u5148\u8ba1\u7b97 LEAST \u548c GREATEST \u8c03\u7528", "commits": ["6f19a8c41"], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "642898021fc24d19184abf4710292b129105be52e881ca0292eddd360accc3b8", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668"], "commit_groups": [["6f19a8c41"]], "identity_text": "Pre-evaluate calls of LEAST and GREATEST when their arguments are constants (Vik Fearing)", "commit_aliases": ["6f19a8c41"], "source_commits": ["6f19a8c41"], "source_entry_id": "12.0/changes/028", "db_id": "70f4e95e9063368628b65470b905a562", "patch_ids": ["f090f567c26c1a30c6f2feda1fceaa14"], "statement_hash": "b9e00f4e0023f8163a36077ed17ee032f1fa271fc5f7a52cf51a322d58e9b608", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-4dcd7e7b2f274499", "migration": false}, {"id": "12.0-fe0dbbcf08f15f03", "cves": [], "html": "<p>\u63d0\u9ad8\u4f18\u5316\u5668\u9a8c\u8bc1\u5e26\u6709 <code>IS NOT NULL</code> \u6761\u4ef6\u7684\u90e8\u5206\u7d22\u5f15\u53ef\u7528\u4e8e\u67e5\u8be2\u7684\u80fd\u529b\uff08Tom Lane\uff0cJames Coleman\uff09<a href=\"https://postgr.es/c/e04a3905e\">\u00a7</a> <a href=\"https://postgr.es/c/65ce07e02\">\u00a7</a></p>\n<p>\u5f53\u8c03\u7528\u67e5\u8be2\u5305\u542b\u7c7b\u578b\u8f6c\u6362\u6216\u5927\u578b <code><em><code>x</code></em> IN (<em><code>array</code></em>)</code> \u5b50\u53e5\u65f6\uff0c\u73b0\u5728\u53ef\u4ee5\u5728\u66f4\u591a\u60c5\u51b5\u4e0b\u8bc6\u522b\u7d22\u5f15\u7684\u53ef\u7528\u6027\u3002</p>", "text": "\u63d0\u9ad8\u4f18\u5316\u5668\u9a8c\u8bc1\u5e26\u6709 IS NOT NULL \u6761\u4ef6\u7684\u90e8\u5206\u7d22\u5f15\u53ef\u7528\u4e8e\u67e5\u8be2\u7684\u80fd\u529b\uff08Tom Lane\uff0cJames Coleman\uff09\u00a7 \u00a7 \u5f53\u8c03\u7528\u67e5\u8be2\u5305\u542b\u7c7b\u578b\u8f6c\u6362\u6216\u5927\u578b x IN (array) \u5b50\u53e5\u65f6\uff0c\u73b0\u5728\u53ef\u4ee5\u5728\u66f4\u591a\u60c5\u51b5\u4e0b\u8bc6\u522b\u7d22\u5f15\u7684\u53ef\u7528\u6027\u3002", "title": "\u63d0\u9ad8\u4f18\u5316\u5668\u9a8c\u8bc1\u5e26\u6709 IS NOT NULL \u6761\u4ef6\u7684\u90e8\u5206\u7d22\u5f15\u53ef\u7528\u4e8e\u67e5\u8be2\u7684\u80fd\u529b", "commits": ["65ce07e02", "e04a3905e"], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "7f9fc05242a868993173e8008c35cdfe5ee9822ec081ab8d2e7fe7feb43178f5", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668"], "commit_groups": [["65ce07e02"], ["e04a3905e"]], "identity_text": "Improve optimizer's ability to verify that partial indexes with IS NOT NULL conditions are usable in queries (Tom Lane, James Coleman) Usability can now be recognized in more cases where the calling query involves casts or large x IN (array) clauses.", "commit_aliases": ["65ce07e02", "e04a3905e"], "source_commits": ["65ce07e02", "e04a3905e"], "source_entry_id": "12.0/changes/029", "db_id": "8207bd1ec01b3654db1f4649a5576db0", "patch_ids": ["25ae9753de65e7b461aa86d6352f9df8", "c7c5e1d691d43feff74083e9ecbb29d7"], "statement_hash": "842c5cc8bf823fc4524e6d62a77fc64a1e2fdd7d1434560f1509d956481907cd", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-fe0dbbcf08f15f03", "migration": false}, {"id": "12.0-8f12633cae1371fe", "cves": [], "html": "<p>\u4f7f\u7528\u4e3a\u6bcf\u5217\u5b9a\u4e49\u7684\u6392\u5e8f\u89c4\u5219\u8ba1\u7b97 <code>ANALYZE</code> \u7edf\u8ba1\u4fe1\u606f\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/5e0928005\">\u00a7</a></p>\n<p>\u4ee5\u524d\uff0c\u6240\u6709\u7edf\u8ba1\u4fe1\u606f\u90fd\u4f7f\u7528\u6570\u636e\u5e93\u7684\u9ed8\u8ba4\u6392\u5e8f\u89c4\u5219\u3002\u5bf9\u4e8e\u4f7f\u7528\u975e\u9ed8\u8ba4\u6392\u5e8f\u89c4\u5219\u7684\u5217\uff0c\u8fd9\u53ef\u80fd\u6539\u5584\u4f18\u5316\u5668\u884c\u4e3a\u3002</p>", "text": "\u4f7f\u7528\u4e3a\u6bcf\u5217\u5b9a\u4e49\u7684\u6392\u5e8f\u89c4\u5219\u8ba1\u7b97 ANALYZE \u7edf\u8ba1\u4fe1\u606f\uff08Tom Lane\uff09\u00a7 \u4ee5\u524d\uff0c\u6240\u6709\u7edf\u8ba1\u4fe1\u606f\u90fd\u4f7f\u7528\u6570\u636e\u5e93\u7684\u9ed8\u8ba4\u6392\u5e8f\u89c4\u5219\u3002\u5bf9\u4e8e\u4f7f\u7528\u975e\u9ed8\u8ba4\u6392\u5e8f\u89c4\u5219\u7684\u5217\uff0c\u8fd9\u53ef\u80fd\u6539\u5584\u4f18\u5316\u5668\u884c\u4e3a\u3002", "title": "\u4f7f\u7528\u4e3a\u6bcf\u5217\u5b9a\u4e49\u7684\u6392\u5e8f\u89c4\u5219\u8ba1\u7b97 ANALYZE \u7edf\u8ba1\u4fe1\u606f", "commits": ["5e0928005"], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "bb3ff527830dcc484dc8483d2380fd267efcc198a611e1b6e90d1b827897c8b1", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668"], "commit_groups": [["5e0928005"]], "identity_text": "Compute ANALYZE statistics using the collation defined for each column (Tom Lane) Previously, the database's default collation was used for all statistics. This potentially gives better optimizer behavior for columns with non-default collations.", "commit_aliases": ["5e0928005"], "source_commits": ["5e0928005"], "source_entry_id": "12.0/changes/030", "db_id": "74c6f061ec243c6dee0645f5f2d5f988", "patch_ids": ["e08c25eaf032ef5041f648c956cb47d0"], "statement_hash": "db73ecc86d8d28d1049dd3bb65e4355d661c3477e73d027939b374fe3f4b13de", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-8f12633cae1371fe", "migration": false}, {"id": "12.0-0a6ca58221baaf31", "cves": [], "html": "<p>\u6539\u8fdb\u5bf9 <a href=\"/docs/12/ddl-system-columns.html\" title=\"5.5.\u00a0\u7cfb\u7edf\u5217\"><code>ctid</code></a> \u5217\u8fdb\u884c\u4e0d\u7b49\u5f0f\u6bd4\u8f83\u65f6\u7684\u9009\u62e9\u7387\u4f30\u7b97\uff08Edmund Horner\uff09<a href=\"https://postgr.es/c/f7111f72d\">\u00a7</a></p>", "text": "\u6539\u8fdb\u5bf9 ctid \u5217\u8fdb\u884c\u4e0d\u7b49\u5f0f\u6bd4\u8f83\u65f6\u7684\u9009\u62e9\u7387\u4f30\u7b97\uff08Edmund Horner\uff09\u00a7", "title": "\u6539\u8fdb\u5bf9 ctid \u5217\u8fdb\u884c\u4e0d\u7b49\u5f0f\u6bd4\u8f83\u65f6\u7684\u9009\u62e9\u7387\u4f30\u7b97", "commits": ["f7111f72d"], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "250668e5ad42039f89b18b2cf90619197e621eca86e6f547c31608ef4cc492fc", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668"], "commit_groups": [["f7111f72d"]], "identity_text": "Improve selectivity estimates for inequality comparisons on ctid columns (Edmund Horner)", "commit_aliases": ["f7111f72d"], "source_commits": ["f7111f72d"], "source_entry_id": "12.0/changes/031", "db_id": "bc8587cdd339936156a99cdcce2d64ca", "patch_ids": ["f70db899b8edc0f6561cb91dbd4b1783"], "statement_hash": "e809064f78ce200d2863c72ec2c2198ce498d514a876c639ef2cb2e217c9f476", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-0a6ca58221baaf31", "migration": false}, {"id": "12.0-71a1fbc6e7b2320c", "cves": [], "html": "<p>\u6539\u8fdb\u5bf9 <a href=\"/docs/12/datatype-oid.html\" title=\"8.19.\u00a0\u5bf9\u8c61\u6807\u8bc6\u7b26\u7c7b\u578b\"><code>tid</code></a> \u7c7b\u578b\u5217\u8fdb\u884c\u8fde\u63a5\u65f6\u7684\u4f18\u5316\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/b5415e3c2\">\u00a7</a> <a href=\"https://postgr.es/c/0a6ea4001\">\u00a7</a></p>\n<p>\u8fd9\u4e9b\u66f4\u6539\u4e3b\u8981\u63d0\u9ad8\u4e86\u5bf9 <code>ctid</code> \u5217\u8fdb\u884c\u81ea\u8fde\u63a5\u7684\u6548\u7387\u3002</p>", "text": "\u6539\u8fdb\u5bf9 tid \u7c7b\u578b\u5217\u8fdb\u884c\u8fde\u63a5\u65f6\u7684\u4f18\u5316\uff08Tom Lane\uff09\u00a7 \u00a7 \u8fd9\u4e9b\u66f4\u6539\u4e3b\u8981\u63d0\u9ad8\u4e86\u5bf9 ctid \u5217\u8fdb\u884c\u81ea\u8fde\u63a5\u7684\u6548\u7387\u3002", "title": "\u6539\u8fdb\u5bf9 tid \u7c7b\u578b\u5217\u8fdb\u884c\u8fde\u63a5\u65f6\u7684\u4f18\u5316", "commits": ["0a6ea4001", "b5415e3c2"], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "b8d5effb1a32aef9641016a5ff8e179c548b327439127b35c9bdf8baa007dfb1", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668"], "commit_groups": [["0a6ea4001"], ["b5415e3c2"]], "identity_text": "Improve optimization of joins on columns of type tid (Tom Lane) These changes primarily improve the efficiency of self-joins on ctid columns.", "commit_aliases": ["0a6ea4001", "b5415e3c2"], "source_commits": ["0a6ea4001", "b5415e3c2"], "source_entry_id": "12.0/changes/032", "db_id": "711d9686ff352f779f770d8b93d0e29b", "patch_ids": ["190f29450404564a0c9878d3a6f674c7", "f49633c5521d66446d7ec04896e91d83"], "statement_hash": "236e1df896ec2888a90cc35068252e250629f94451e81d08911b54d0e859be58", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-71a1fbc6e7b2320c", "migration": false}, {"id": "12.0-673204ef2c1688d4", "cves": [], "html": "<p>\u4fee\u590d\u67d0\u4e9b B-\u6811\u6bd4\u8f83\u64cd\u4f5c\u7b26\u548c\u652f\u6301\u51fd\u6570\u7684\u9632\u6cc4\u6f0f\u5c5e\u6027\u6807\u8bb0\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/39a96512b\">\u00a7</a> <a href=\"https://postgr.es/c/d9110d7e1\">\u00a7</a></p>\n<p>\u8fd9\u4f7f\u4e00\u4e9b\u4ee5\u524d\u5728\u5b58\u5728\u5b89\u5168\u5c4f\u969c\u89c6\u56fe\u6216\u884c\u7ea7\u5b89\u5168\u65f6\u65e0\u6cd5\u5e94\u7528\u7684\u4f18\u5316\u5f97\u4ee5\u5e94\u7528\u3002</p>", "text": "\u4fee\u590d\u67d0\u4e9b B-\u6811\u6bd4\u8f83\u64cd\u4f5c\u7b26\u548c\u652f\u6301\u51fd\u6570\u7684\u9632\u6cc4\u6f0f\u5c5e\u6027\u6807\u8bb0\uff08Tom Lane\uff09\u00a7 \u00a7 \u8fd9\u4f7f\u4e00\u4e9b\u4ee5\u524d\u5728\u5b58\u5728\u5b89\u5168\u5c4f\u969c\u89c6\u56fe\u6216\u884c\u7ea7\u5b89\u5168\u65f6\u65e0\u6cd5\u5e94\u7528\u7684\u4f18\u5316\u5f97\u4ee5\u5e94\u7528\u3002", "title": "\u4fee\u590d\u67d0\u4e9b B-\u6811\u6bd4\u8f83\u64cd\u4f5c\u7b26\u548c\u652f\u6301\u51fd\u6570\u7684\u9632\u6cc4\u6f0f\u5c5e\u6027\u6807\u8bb0", "commits": ["39a96512b", "d9110d7e1"], "section": "\u670d\u52a1\u5668 / \u4f18\u5316\u5668", "category": "bugfix", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.4", "source_hash": "4f9271a6b03657fdd224aeab9d52e211d130b7825902fe6e27cb9c08aec61819", "section_path": ["\u670d\u52a1\u5668", "\u4f18\u5316\u5668"], "commit_groups": [["39a96512b"], ["d9110d7e1"]], "identity_text": "Fix the leakproofness designations of some btree comparison operators and support functions (Tom Lane) This allows some optimizations that previously would not have been applied in the presence of security barrier views or row-level security.", "commit_aliases": ["39a96512b", "d9110d7e1"], "source_commits": ["39a96512b", "d9110d7e1"], "source_entry_id": "12.0/changes/033", "db_id": "b471b591f5ab3218b0ea561ae4b786b6", "patch_ids": ["7c7b87636294095c6ef5de38caa0d5c5", "959b73c70010df3dc63a9712e0e67d4b"], "statement_hash": "67fcbb083b5bfe6740997c18a0255f429d809d85ac67f1305303f26f2d3a7ab2", "relations": [], "category_label": "BUG \u4fee\u590d", "url": "/docs/compare/?release=12.0#12.0-673204ef2c1688d4", "migration": false}, {"id": "12.0-c1525b8983122dd3", "cves": [], "html": "<p>\u5982\u679c\u670d\u52a1\u5668\u6784\u5efa\u65f6\u5305\u542b\u76f8\u5e94\u652f\u6301\uff0c\u5219\u9ed8\u8ba4\u542f\u7528<a href=\"/docs/12/jit.html\" title=\"\u7b2c\u00a031\u00a0\u7ae0\u00a0\u5373\u65f6\u7f16\u8bd1\uff08JIT\uff09\">\u5373\u65f6</a>\uff08<acronym>JIT</acronym>\uff09\u7f16\u8bd1\uff08Andres Freund\uff09<a href=\"https://postgr.es/c/1f7fc7670\">\u00a7</a></p>\n<p>\u8bf7\u6ce8\u610f\uff0c\u9ed8\u8ba4\u6784\u5efa\u4e0d\u5305\u542b\u6b64\u652f\u6301\uff0c\u5fc5\u987b\u5728\u914d\u7f6e\u6784\u5efa\u65f6\u663e\u5f0f\u9009\u62e9\u3002</p>", "text": "\u5982\u679c\u670d\u52a1\u5668\u6784\u5efa\u65f6\u5305\u542b\u76f8\u5e94\u652f\u6301\uff0c\u5219\u9ed8\u8ba4\u542f\u7528\u5373\u65f6\uff08JIT\uff09\u7f16\u8bd1\uff08Andres Freund\uff09\u00a7 \u8bf7\u6ce8\u610f\uff0c\u9ed8\u8ba4\u6784\u5efa\u4e0d\u5305\u542b\u6b64\u652f\u6301\uff0c\u5fc5\u987b\u5728\u914d\u7f6e\u6784\u5efa\u65f6\u663e\u5f0f\u9009\u62e9\u3002", "title": "\u5982\u679c\u670d\u52a1\u5668\u6784\u5efa\u65f6\u5305\u542b\u76f8\u5e94\u652f\u6301\uff0c\u5219\u9ed8\u8ba4\u542f\u7528\u5373\u65f6\uff08JIT\uff09\u7f16\u8bd1", "commits": ["1f7fc7670"], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "fb5adacb434e656868be5405f4e3388d7abeecfd76a09d3619ee07ace6b91902", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["1f7fc7670"]], "identity_text": "Enable Just-in-Time (JIT) compilation by default, if the server has been built with support for it (Andres Freund) Note that this support is not built by default, but has to be selected explicitly while configuring the build.", "commit_aliases": ["1f7fc7670"], "source_commits": ["1f7fc7670"], "source_entry_id": "12.0/changes/034", "db_id": "4fc94c417861eade08914fa8ff4d7334", "patch_ids": ["97bc64dc7050290bd3e2f0626e17ee9e"], "statement_hash": "6550cccd54cfafe67e3be8a37984d70d1a3f60d7276366e96e0e5a5fc6d8e957", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-c1525b8983122dd3", "migration": false}, {"id": "12.0-e674cbf7b73cd4f6", "cves": [], "html": "<p>\u52a0\u5feb\u5173\u952e\u5b57\u67e5\u627e\u901f\u5ea6\uff08John Naylor\uff0cJoerg Sonnenberger\uff0cTom Lane\uff09<a href=\"https://postgr.es/c/afb0d0712\">\u00a7</a> <a href=\"https://postgr.es/c/c64d0cd5c\">\u00a7</a></p>", "text": "\u52a0\u5feb\u5173\u952e\u5b57\u67e5\u627e\u901f\u5ea6\uff08John Naylor\uff0cJoerg Sonnenberger\uff0cTom Lane\uff09\u00a7 \u00a7", "title": "\u52a0\u5feb\u5173\u952e\u5b57\u67e5\u627e\u901f\u5ea6", "commits": ["afb0d0712", "c64d0cd5c"], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "2bd45e72812f16605270930458a4b481160c52036c2a3b38e4e104ef2d9452e8", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["afb0d0712"], ["c64d0cd5c"]], "identity_text": "Speed up keyword lookup (John Naylor, Joerg Sonnenberger, Tom Lane)", "commit_aliases": ["afb0d0712", "c64d0cd5c"], "source_commits": ["afb0d0712", "c64d0cd5c"], "source_entry_id": "12.0/changes/035", "db_id": "448151831a0ba46fd1ed924df359038f", "patch_ids": ["4b03e6a5b223c217cc49d22f94ce596a", "8160758b3010e76b4610c28aa1e93227"], "statement_hash": "a5dd222691bf226cdaf2164f766805d93c7e30b8dfade4215c55173491894a97", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-e674cbf7b73cd4f6", "migration": false}, {"id": "12.0-a28e06158a58f553", "cves": [], "html": "<p>\u63d0\u9ad8 <code>position()</code> \u53ca\u76f8\u5173\u51fd\u6570\u4e2d\u591a\u5b57\u8282\u5b57\u7b26\u7684\u641c\u7d22\u6027\u80fd\uff08Heikki Linnakangas\uff09<a href=\"https://postgr.es/c/9556aa01c\">\u00a7</a></p>", "text": "\u63d0\u9ad8 position() \u53ca\u76f8\u5173\u51fd\u6570\u4e2d\u591a\u5b57\u8282\u5b57\u7b26\u7684\u641c\u7d22\u6027\u80fd\uff08Heikki Linnakangas\uff09\u00a7", "title": "\u63d0\u9ad8 position() \u53ca\u76f8\u5173\u51fd\u6570\u4e2d\u591a\u5b57\u8282\u5b57\u7b26\u7684\u641c\u7d22\u6027\u80fd", "commits": ["9556aa01c"], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "aa78371180ad2ae092799caa5899d99b119a4483531a2b9815b99db19dbceff8", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["9556aa01c"]], "identity_text": "Improve search performance for multi-byte characters in position() and related functions (Heikki Linnakangas)", "commit_aliases": ["9556aa01c"], "source_commits": ["9556aa01c"], "source_entry_id": "12.0/changes/036", "db_id": "d4b2b3040bedc6a32857c31fa5f78091", "patch_ids": ["0578abcd72bed2342f78169cd1d110f4"], "statement_hash": "1e5323654bc6fc07ebfb917d4e4c4271db390ab6aa0a483cfc496bf2d6994e03", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-a28e06158a58f553", "migration": false}, {"id": "12.0-fc3d3e6b19ffd97c", "cves": [], "html": "<p>\u5141\u8bb8\u5bf9\u7ecf\u8fc7 <a href=\"/docs/12/storage-toast.html\" title=\"69.2.\u00a0TOAST\">TOAST \u5904\u7406</a>\u7684\u503c\u4ec5\u89e3\u538b\u6240\u9700\u7684\u6700\u5c0f\u90e8\u5206\uff08Paul Ramsey\uff09<a href=\"https://postgr.es/c/4d0e994ee\">\u00a7</a></p>\n<p>\u8fd9\u5bf9\u53ea\u9700\u68c0\u67e5\u7ecf\u8fc7 TOAST \u5904\u7406\u7684\u5b57\u6bb5\u8d77\u59cb\u90e8\u5206\u7684\u4f8b\u7a0b\u5f88\u6709\u7528\u3002</p>", "text": "\u5141\u8bb8\u5bf9\u7ecf\u8fc7 TOAST \u5904\u7406\u7684\u503c\u4ec5\u89e3\u538b\u6240\u9700\u7684\u6700\u5c0f\u90e8\u5206\uff08Paul Ramsey\uff09\u00a7 \u8fd9\u5bf9\u53ea\u9700\u68c0\u67e5\u7ecf\u8fc7 TOAST \u5904\u7406\u7684\u5b57\u6bb5\u8d77\u59cb\u90e8\u5206\u7684\u4f8b\u7a0b\u5f88\u6709\u7528\u3002", "title": "\u5141\u8bb8\u5bf9\u7ecf\u8fc7 TOAST \u5904\u7406\u7684\u503c\u4ec5\u89e3\u538b\u6240\u9700\u7684\u6700\u5c0f\u90e8\u5206", "commits": ["4d0e994ee"], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "e0922c70b992df09fddf5039db843775089ae018d1bdf56ee592f15e3463e124", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["4d0e994ee"]], "identity_text": "Allow toasted values to be minimally decompressed (Paul Ramsey) This is useful for routines that only need to examine the initial portion of a toasted field.", "commit_aliases": ["4d0e994ee"], "source_commits": ["4d0e994ee"], "source_entry_id": "12.0/changes/037", "db_id": "345624ffa4832a444f8c2fedc9c0f93f", "patch_ids": ["37f5ef371a6550a7b730835cce670bcf"], "statement_hash": "05356919fa195edf518ec9066ae03dd0844fb7bb99c2984dca665e30d6ccd1c4", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-fc3d3e6b19ffd97c", "migration": false}, {"id": "12.0-ec8a855a822bd70e", "cves": [], "html": "<p>\u5141\u8bb8 <a href=\"/docs/12/sql-altertable.html\" title=\"ALTER TABLE\"><code>ALTER TABLE ... SET NOT NULL</code></a> \u907f\u514d\u4e0d\u5fc5\u8981\u7684\u8868\u626b\u63cf\uff08Sergei Kornilov\uff09<a href=\"https://postgr.es/c/bbb96c370\">\u00a7</a></p>\n<p>\u5f53\u53ef\u4ee5\u8bc6\u522b\u51fa\u8868\u7684\u5217\u7ea6\u675f\u4e0d\u5141\u8bb8\u7a7a\u503c\u65f6\uff0c\u5c31\u80fd\u8fdb\u884c\u6b64\u9879\u4f18\u5316\u3002</p>", "text": "\u5141\u8bb8 ALTER TABLE ... SET NOT NULL \u907f\u514d\u4e0d\u5fc5\u8981\u7684\u8868\u626b\u63cf\uff08Sergei Kornilov\uff09\u00a7 \u5f53\u53ef\u4ee5\u8bc6\u522b\u51fa\u8868\u7684\u5217\u7ea6\u675f\u4e0d\u5141\u8bb8\u7a7a\u503c\u65f6\uff0c\u5c31\u80fd\u8fdb\u884c\u6b64\u9879\u4f18\u5316\u3002", "title": "\u5141\u8bb8 ALTER TABLE ... SET NOT NULL \u907f\u514d\u4e0d\u5fc5\u8981\u7684\u8868\u626b\u63cf", "commits": ["bbb96c370"], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "f5396e01349d131c3f8dd490e62bfc872facfcba767f5854948a29dd44b1f03c", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["bbb96c370"]], "identity_text": "Allow ALTER TABLE ... SET NOT NULL to avoid unnecessary table scans (Sergei Kornilov) This can be optimized when the table's column constraints can be recognized as disallowing nulls.", "commit_aliases": ["bbb96c370"], "source_commits": ["bbb96c370"], "source_entry_id": "12.0/changes/038", "db_id": "b239f4d78fed50ae164bc8b29ac5a282", "patch_ids": ["8947f9552790133b36dd96320b18a574"], "statement_hash": "9fa7c7f1742350cc8ab2a63995f83403d4b4045b9fb5afc5bea6ef78fee166b7", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-ec8a855a822bd70e", "migration": false}, {"id": "12.0-a9555575d578d688", "cves": [], "html": "<p>\u4f1a\u8bdd\u65f6\u533a\u4e3a <acronym>UTC</acronym> \u65f6\uff0c\u5141\u8bb8\u4f7f\u7528 <code>ALTER TABLE ... SET DATA TYPE</code> \u5728 <code>timestamp</code> \u548c <code>timestamptz</code> \u4e4b\u95f4\u8f6c\u6362\uff0c\u800c\u65e0\u9700\u91cd\u5199\u8868\uff08Noah Misch\uff09<a href=\"https://postgr.es/c/3c5926301\">\u00a7</a></p>\n<p>\u5728 <acronym>UTC</acronym> \u65f6\u533a\u4e2d\uff0c\u8fd9\u4e24\u79cd\u6570\u636e\u7c7b\u578b\u662f\u4e8c\u8fdb\u5236\u517c\u5bb9\u7684\u3002</p>", "text": "\u4f1a\u8bdd\u65f6\u533a\u4e3a UTC \u65f6\uff0c\u5141\u8bb8\u4f7f\u7528 ALTER TABLE ... SET DATA TYPE \u5728 timestamp \u548c timestamptz \u4e4b\u95f4\u8f6c\u6362\uff0c\u800c\u65e0\u9700\u91cd\u5199\u8868\uff08Noah Misch\uff09\u00a7 \u5728 UTC \u65f6\u533a\u4e2d\uff0c\u8fd9\u4e24\u79cd\u6570\u636e\u7c7b\u578b\u662f\u4e8c\u8fdb\u5236\u517c\u5bb9\u7684\u3002", "title": "\u4f1a\u8bdd\u65f6\u533a\u4e3a UTC \u65f6\uff0c\u5141\u8bb8\u4f7f\u7528 ALTER TABLE ... SET DATA TYPE \u5728 timestamp \u548c timestamptz \u4e4b\u95f4\u8f6c\u6362\uff0c\u800c\u65e0\u9700\u91cd\u5199\u8868", "commits": ["3c5926301"], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "4e582f1dc0678a19c215b2d719272959a80e8d0d7d7fb67e843db9e7e8308d40", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["3c5926301"]], "identity_text": "Allow ALTER TABLE ... SET DATA TYPE changing between timestamp and timestamptz to avoid a table rewrite when the session time zone is UTC (Noah Misch) In the UTC time zone, these two data types are binary compatible.", "commit_aliases": ["3c5926301"], "source_commits": ["3c5926301"], "source_entry_id": "12.0/changes/039", "db_id": "d875677bd57c5ee856474fab7cf965fe", "patch_ids": ["fa097bef6cfc856d268e0267f286f344"], "statement_hash": "bd36582c7764d2261d841e8ff6d90961f0a878f207dd95b1e307dca2d5104df4", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-a9555575d578d688", "migration": false}, {"id": "12.0-2b80ed21925fe5ed", "cves": [], "html": "<p>\u63d0\u9ad8\u5c06\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a <code>int2</code> \u6216 <code>int4</code> \u6574\u6570\u7684\u901f\u5ea6\uff08Andres Freund\uff09<a href=\"https://postgr.es/c/86eaf208e\">\u00a7</a></p>", "text": "\u63d0\u9ad8\u5c06\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a int2 \u6216 int4 \u6574\u6570\u7684\u901f\u5ea6\uff08Andres Freund\uff09\u00a7", "title": "\u63d0\u9ad8\u5c06\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a int2 \u6216 int4 \u6574\u6570\u7684\u901f\u5ea6", "commits": ["86eaf208e"], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "d3e70e8104bcaecc7923ab55fc85e54879bf741fdefb952fc7ffab149d954c5e", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["86eaf208e"]], "identity_text": "Improve speed in converting strings to int2 or int4 integers (Andres Freund)", "commit_aliases": ["86eaf208e"], "source_commits": ["86eaf208e"], "source_entry_id": "12.0/changes/040", "db_id": "4b3e79ed3ab1f05a59eee4c6c0aecaa9", "patch_ids": ["9b38dc08a218cc0137f1e01299d7655e"], "statement_hash": "5abe0c13bed96461307c31396b67edb238475d3ec641105f7488505ad318ad18", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-2b80ed21925fe5ed", "migration": false}, {"id": "12.0-0763102888c60d7f", "cves": [], "html": "<p>\u5141\u8bb8\u5728 <a href=\"/docs/12/transaction-iso.html#XACT-SERIALIZABLE\" title=\"13.2.3.\u00a0\u53ef\u4e32\u884c\u5316\u9694\u79bb\u7ea7\u522b\"><code>SERIALIZABLE</code></a> \u9694\u79bb\u6a21\u5f0f\u4e0b\u4f7f\u7528\u5e76\u884c\u67e5\u8be2\uff08Thomas Munro\uff09<a href=\"https://postgr.es/c/bb16aba50\">\u00a7</a></p>\n<p>\u4ee5\u524d\uff0c\u5728\u6b64\u6a21\u5f0f\u4e0b\u4f1a\u7981\u7528\u5e76\u884c\u6267\u884c\u3002</p>", "text": "\u5141\u8bb8\u5728 SERIALIZABLE \u9694\u79bb\u6a21\u5f0f\u4e0b\u4f7f\u7528\u5e76\u884c\u67e5\u8be2\uff08Thomas Munro\uff09\u00a7 \u4ee5\u524d\uff0c\u5728\u6b64\u6a21\u5f0f\u4e0b\u4f1a\u7981\u7528\u5e76\u884c\u6267\u884c\u3002", "title": "\u5141\u8bb8\u5728 SERIALIZABLE \u9694\u79bb\u6a21\u5f0f\u4e0b\u4f7f\u7528\u5e76\u884c\u67e5\u8be2", "commits": ["bb16aba50"], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "adc3c5d47d569a62965aa6381108590e27df5809ef0859e7a49438708b576951", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["bb16aba50"]], "identity_text": "Allow parallelized queries when in SERIALIZABLE isolation mode (Thomas Munro) Previously, parallelism was disabled when in this mode.", "commit_aliases": ["bb16aba50"], "source_commits": ["bb16aba50"], "source_entry_id": "12.0/changes/041", "db_id": "62108e68317d432553d2ab2ee4d44566", "patch_ids": ["2248332a0b5c2892320a051d8cc4ac60"], "statement_hash": "31591f86fb7298e1f7ca5fd202544c3f57fce074e471ee7469044b8ad25f5f0c", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-0763102888c60d7f", "migration": false}, {"id": "12.0-b0e61767c3781532", "cves": [], "html": "<p>\u4f7f\u7528 <code>pread()</code> \u548c <code>pwrite()</code> \u6267\u884c\u968f\u673a I/O\uff08Oskari Saarenmaa\uff0cThomas Munro\uff09<a href=\"https://postgr.es/c/3fd2a7932\">\u00a7</a> <a href=\"https://postgr.es/c/c24dcd0cf\">\u00a7</a></p>\n<p>\u8fd9\u51cf\u5c11\u4e86 I/O \u6240\u9700\u7684\u7cfb\u7edf\u8c03\u7528\u6b21\u6570\u3002</p>", "text": "\u4f7f\u7528 pread() \u548c pwrite() \u6267\u884c\u968f\u673a I/O\uff08Oskari Saarenmaa\uff0cThomas Munro\uff09\u00a7 \u00a7 \u8fd9\u51cf\u5c11\u4e86 I/O \u6240\u9700\u7684\u7cfb\u7edf\u8c03\u7528\u6b21\u6570\u3002", "title": "\u4f7f\u7528 pread() \u548c pwrite() \u6267\u884c\u968f\u673a I/O", "commits": ["3fd2a7932", "c24dcd0cf"], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "b9c60ab3b0cd9e006540ea1628cf34a9a05431679af1a37503d9a9cb2e8ca4e6", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["3fd2a7932"], ["c24dcd0cf"]], "identity_text": "Use pread() and pwrite() for random I/O (Oskari Saarenmaa, Thomas Munro) This reduces the number of system calls required for I/O.", "commit_aliases": ["3fd2a7932", "c24dcd0cf"], "source_commits": ["3fd2a7932", "c24dcd0cf"], "source_entry_id": "12.0/changes/042", "db_id": "10357cfaf86516b870292936ef333cd9", "patch_ids": ["66525d2792afdf61f807fa224a1d3ace", "6ba16702bbe55a4ae71127dc4379ea32"], "statement_hash": "494b8684e3b7d112a4978a9502fc39a2b2045a98f47c2ad7a1f61b12b3b60317", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-b0e61767c3781532", "migration": false}, {"id": "12.0-6533482dc3cda7d8", "cves": [], "html": "<p>\u63d0\u9ad8\u5728 <span>FreeBSD</span> \u4e0a\u8bbe\u7f6e<a href=\"/docs/12/runtime-config-logging.html#GUC-UPDATE-PROCESS-TITLE\">\u8fdb\u7a0b\u6807\u9898</a>\u7684\u901f\u5ea6\uff08Thomas Munro\uff09<a href=\"https://postgr.es/c/1bc180cd2\">\u00a7</a></p>", "text": "\u63d0\u9ad8\u5728 FreeBSD \u4e0a\u8bbe\u7f6e\u8fdb\u7a0b\u6807\u9898\u7684\u901f\u5ea6\uff08Thomas Munro\uff09\u00a7", "title": "\u63d0\u9ad8\u5728 FreeBSD \u4e0a\u8bbe\u7f6e\u8fdb\u7a0b\u6807\u9898\u7684\u901f\u5ea6", "commits": ["1bc180cd2"], "section": "\u670d\u52a1\u5668 / \u4e00\u822c\u6027\u80fd", "category": "performance", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.5", "source_hash": "72dfbf60ef2957b1d30f1611a2828b7b40c2607ce23c02a6c59251471c7d4872", "section_path": ["\u670d\u52a1\u5668", "\u4e00\u822c\u6027\u80fd"], "commit_groups": [["1bc180cd2"]], "identity_text": "Improve the speed of setting the process title on FreeBSD (Thomas Munro)", "commit_aliases": ["1bc180cd2"], "source_commits": ["1bc180cd2"], "source_entry_id": "12.0/changes/043", "db_id": "a82ba96a23220ea967b3e6960e0a0cf1", "patch_ids": ["01da4673788fcbbcd6c2820f38a1b633"], "statement_hash": "b412bdcd7f1273db809adfeec2b013f78c9e2be6e5dadb9ffcd604efdd3a771e", "relations": [], "category_label": "\u6027\u80fd\u6539\u8fdb", "url": "/docs/compare/?release=12.0#12.0-6533482dc3cda7d8", "migration": false}, {"id": "12.0-780f22017604e9a7", "cves": [], "html": "<p>\u5141\u8bb8\u4ec5\u8bb0\u5f55\u4e00\u5b9a\u6bd4\u4f8b\u4e8b\u52a1\u4e2d\u7684\u8bed\u53e5\uff08Adrien Nayrat\uff09<a href=\"https://postgr.es/c/799e22034\">\u00a7</a></p>\n<p>\u8fd9\u7531\u53c2\u6570<a href=\"/docs/12/runtime-config-logging.html#GUC-LOG-TRANSACTION-SAMPLE-RATE\">log_transaction_sample_rate</a>\u63a7\u5236\u3002</p>", "text": "\u5141\u8bb8\u4ec5\u8bb0\u5f55\u4e00\u5b9a\u6bd4\u4f8b\u4e8b\u52a1\u4e2d\u7684\u8bed\u53e5\uff08Adrien Nayrat\uff09\u00a7 \u8fd9\u7531\u53c2\u6570log_transaction_sample_rate\u63a7\u5236\u3002", "title": "\u5141\u8bb8\u4ec5\u8bb0\u5f55\u4e00\u5b9a\u6bd4\u4f8b\u4e8b\u52a1\u4e2d\u7684\u8bed\u53e5", "commits": ["799e22034"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "045483befde32bcb6d7eaa5aac5e32da9b7f434c8fd6cb1d5da1c492ee76e77a", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["799e22034"]], "identity_text": "Allow logging of statements from only a percentage of transactions (Adrien Nayrat) The parameter guc-log-transaction-sample-rate controls this.", "commit_aliases": ["799e22034"], "source_commits": ["799e22034"], "source_entry_id": "12.0/changes/044", "db_id": "415dc41fa2d12b800fd72fb1a75e370a", "patch_ids": ["41d79384e324ade946ea4f084e67cfc2"], "statement_hash": "80c5974184489007037b7f0032ee50f9071e90b8b8a767050b304ff9b478c534", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-780f22017604e9a7", "migration": false}, {"id": "12.0-2fb8977d18753f42", "cves": [], "html": "<p>\u4e3a <code>CREATE INDEX</code> \u548c <code>REINDEX</code> \u64cd\u4f5c\u6dfb\u52a0\u8fdb\u5ea6\u62a5\u544a\uff08\u00c1lvaro Herrera\uff0cPeter Eisentraut\uff09<a href=\"https://postgr.es/c/ab0dfc961\">\u00a7</a> <a href=\"https://postgr.es/c/03f9e5cba\">\u00a7</a></p>\n<p>\u8fdb\u5ea6\u901a\u8fc7 <a href=\"/docs/12/progress-reporting.html#CREATE-INDEX-PROGRESS-REPORTING\" title=\"27.4.1.\u00a0CREATE INDEX \u8fdb\u5ea6\u62a5\u544a\"><code>pg_stat_progress_create_index</code></a> \u7cfb\u7edf\u89c6\u56fe\u62a5\u544a\u3002</p>", "text": "\u4e3a CREATE INDEX \u548c REINDEX \u64cd\u4f5c\u6dfb\u52a0\u8fdb\u5ea6\u62a5\u544a\uff08\u00c1lvaro Herrera\uff0cPeter Eisentraut\uff09\u00a7 \u00a7 \u8fdb\u5ea6\u901a\u8fc7 pg_stat_progress_create_index \u7cfb\u7edf\u89c6\u56fe\u62a5\u544a\u3002", "title": "\u4e3a CREATE INDEX \u548c REINDEX \u64cd\u4f5c\u6dfb\u52a0\u8fdb\u5ea6\u62a5\u544a", "commits": ["03f9e5cba", "ab0dfc961"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "a2f457fd002cd94586637fcf7c58835b3ab2ab57769f969fe368a545520657d1", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["03f9e5cba"], ["ab0dfc961"]], "identity_text": "Add progress reporting to CREATE INDEX and REINDEX operations (\u00c1lvaro Herrera, Peter Eisentraut) Progress is reported in the pg_stat_progress_create_index system view.", "commit_aliases": ["03f9e5cba", "ab0dfc961"], "source_commits": ["03f9e5cba", "ab0dfc961"], "source_entry_id": "12.0/changes/045", "db_id": "0a212dcf127dad92cccda50c23eb7cab", "patch_ids": ["ab20fd2c9e90d5826dcba6a086dc7d27", "c4bf1c33f01c8b6416b576ec8c741bb7"], "statement_hash": "27444196cf096db9c267ac19c51fb7ff3b4c7efb6bce236e638d1201574ab1d8", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-2fb8977d18753f42", "migration": false}, {"id": "12.0-d29b432d9f31a92e", "cves": [], "html": "<p>\u4e3a <code>CLUSTER</code> \u548c <code>VACUUM FULL</code> \u6dfb\u52a0\u8fdb\u5ea6\u62a5\u544a\uff08Tatsuro Yamada\uff09<a href=\"https://postgr.es/c/6f97457e0\">\u00a7</a></p>\n<p>\u8fdb\u5ea6\u901a\u8fc7 <a href=\"/docs/12/progress-reporting.html#CLUSTER-PROGRESS-REPORTING\" title=\"27.4.3.\u00a0CLUSTER \u8fdb\u5ea6\u62a5\u544a\"><code>pg_stat_progress_cluster</code></a> \u7cfb\u7edf\u89c6\u56fe\u62a5\u544a\u3002</p>", "text": "\u4e3a CLUSTER \u548c VACUUM FULL \u6dfb\u52a0\u8fdb\u5ea6\u62a5\u544a\uff08Tatsuro Yamada\uff09\u00a7 \u8fdb\u5ea6\u901a\u8fc7 pg_stat_progress_cluster \u7cfb\u7edf\u89c6\u56fe\u62a5\u544a\u3002", "title": "\u4e3a CLUSTER \u548c VACUUM FULL \u6dfb\u52a0\u8fdb\u5ea6\u62a5\u544a", "commits": ["6f97457e0"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "265ed27964eecde25d4fd3e0ac89f0177e5c59f2705b93d467376b0d996bffdb", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["6f97457e0"]], "identity_text": "Add progress reporting to CLUSTER and VACUUM FULL (Tatsuro Yamada) Progress is reported in the pg_stat_progress_cluster system view.", "commit_aliases": ["6f97457e0"], "source_commits": ["6f97457e0"], "source_entry_id": "12.0/changes/046", "db_id": "5206e103f3d2d185de2aca996a3231be", "patch_ids": ["40db4eb2a151c880ef5661f26d6319e8"], "statement_hash": "e0e109c12c8b2c92d152923807eb76d3224ad25b754af1b5e6d78a8c335f19c3", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d29b432d9f31a92e", "migration": false}, {"id": "12.0-2740a4912dcc6faa", "cves": [], "html": "<p>\u4e3a<a href=\"/docs/12/app-pgchecksums.html\" title=\"pg_checksums\"><span><span>pg_checksums</span></span></a>\u6dfb\u52a0\u8fdb\u5ea6\u62a5\u544a\uff08Michael Banck\uff0cBernd Helmle\uff09<a href=\"https://postgr.es/c/280e5f140\">\u00a7</a></p>\n<p>\u53ef\u901a\u8fc7 <code>--progress</code> \u9009\u9879\u542f\u7528\u6b64\u529f\u80fd\u3002</p>", "text": "\u4e3apg_checksums\u6dfb\u52a0\u8fdb\u5ea6\u62a5\u544a\uff08Michael Banck\uff0cBernd Helmle\uff09\u00a7 \u53ef\u901a\u8fc7 --progress \u9009\u9879\u542f\u7528\u6b64\u529f\u80fd\u3002", "title": "\u4e3apg_checksums\u6dfb\u52a0\u8fdb\u5ea6\u62a5\u544a", "commits": ["280e5f140"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "35cc89ea6eba378543fce2ab82ab9f7a50d2f14dfb626984d07abe38cf5e9cd4", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["280e5f140"]], "identity_text": "Add progress reporting to app-pgchecksums (Michael Banck, Bernd Helmle) This is enabled with the option --progress.", "commit_aliases": ["280e5f140"], "source_commits": ["280e5f140"], "source_entry_id": "12.0/changes/047", "db_id": "81e212f8f48c7ef41fe4bee8b5931f68", "patch_ids": ["5d738eb9c2829749524ba230cd89ecb1"], "statement_hash": "115251588d9fbc3a9437da62726b553c93312c869752d31c122cb4a7d08d7b26", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-2740a4912dcc6faa", "migration": false}, {"id": "12.0-c1bc7e0236bdec47", "cves": [], "html": "<p>\u5728 <code>pg_stat_database</code> \u4e2d\u6dfb\u52a0\u6821\u9a8c\u548c\u5931\u8d25\u8ba1\u6570\u5668\uff08Magnus Hagander\uff09<a href=\"https://postgr.es/c/6b9e875f7\">\u00a7</a></p>", "text": "\u5728 pg_stat_database \u4e2d\u6dfb\u52a0\u6821\u9a8c\u548c\u5931\u8d25\u8ba1\u6570\u5668\uff08Magnus Hagander\uff09\u00a7", "title": "\u5728 pg_stat_database \u4e2d\u6dfb\u52a0\u6821\u9a8c\u548c\u5931\u8d25\u8ba1\u6570\u5668", "commits": ["6b9e875f7"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "f77513ee40eaddd1efacae03adbcdf10e1ba597265d5a1f57b6791c7249d2535", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["6b9e875f7"]], "identity_text": "Add counter of checksum failures to pg_stat_database (Magnus Hagander)", "commit_aliases": ["6b9e875f7"], "source_commits": ["6b9e875f7"], "source_entry_id": "12.0/changes/048", "db_id": "05b34322a504973437ccd2e6567985c6", "patch_ids": ["91416e4d0051a84608f748533bb450e3"], "statement_hash": "372f8782adb777a6ebb6b7b5c7f852b5eb4ea7314a8a3db8cbd1e90ec87e34b1", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-c1bc7e0236bdec47", "migration": false}, {"id": "12.0-1ebaaba25f394fb9", "cves": [], "html": "<p>\u5728\u7cfb\u7edf\u89c6\u56fe <code>pg_stat_database</code> \u4e2d\u6dfb\u52a0\u5bf9\u5168\u5c40\u5bf9\u8c61\u7684\u8ddf\u8e2a\uff08Julien Rouhaud\uff09<a href=\"https://postgr.es/c/77bd49adb\">\u00a7</a></p>\n<p>\u5168\u5c40\u5bf9\u8c61\u5bf9\u5e94\u7684 <a href=\"/docs/12/monitoring-stats.html#PG-STAT-DATABASE-VIEW\" title=\"\u8868\u00a027.12.\u00a0pg_stat_database \u89c6\u56fe\"><code>pg_stat_database</code></a>.<code>datid</code> \u503c\u663e\u793a\u4e3a\u96f6\u3002</p>", "text": "\u5728\u7cfb\u7edf\u89c6\u56fe pg_stat_database \u4e2d\u6dfb\u52a0\u5bf9\u5168\u5c40\u5bf9\u8c61\u7684\u8ddf\u8e2a\uff08Julien Rouhaud\uff09\u00a7 \u5168\u5c40\u5bf9\u8c61\u5bf9\u5e94\u7684 pg_stat_database.datid \u503c\u663e\u793a\u4e3a\u96f6\u3002", "title": "\u5728\u7cfb\u7edf\u89c6\u56fe pg_stat_database \u4e2d\u6dfb\u52a0\u5bf9\u5168\u5c40\u5bf9\u8c61\u7684\u8ddf\u8e2a", "commits": ["77bd49adb"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "2613db974cefcf7cfdcc1463d389a6a67b8c670b1b2097c5fc67c8a0eb197548", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["77bd49adb"]], "identity_text": "Add tracking of global objects in system view pg_stat_database (Julien Rouhaud) Global objects are shown with a pg_stat_database.datid value of zero.", "commit_aliases": ["77bd49adb"], "source_commits": ["77bd49adb"], "source_entry_id": "12.0/changes/049", "db_id": "57fb3451093095301fb7d620d1b98ba8", "patch_ids": ["2caba8f45b1fc05e14ff2e2f658ab63f"], "statement_hash": "10f46b1042f7c151f7b8d11b12fc3b3671789446f809996c5926bee0371af2a0", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-1ebaaba25f394fb9", "migration": false}, {"id": "12.0-04767aefdb4f4bd0", "cves": [], "html": "<p>\u6dfb\u52a0\u5217\u51fa\u5f52\u6863\u76ee\u5f55\u5185\u5bb9\u7684\u529f\u80fd\uff08Christoph Moench-Tegeder\uff09<a href=\"https://postgr.es/c/c48101620\">\u00a7</a></p>\n<p>\u76f8\u5e94\u51fd\u6570\u4e3a <a href=\"/docs/12/functions-admin.html#FUNCTIONS-ADMIN-GENFILE-TABLE\" title=\"\u8868\u00a09.94.\u00a0\u901a\u7528\u6587\u4ef6\u8bbf\u95ee\u51fd\u6570\"><code>pg_ls_archive_statusdir()</code></a>\u3002</p>", "text": "\u6dfb\u52a0\u5217\u51fa\u5f52\u6863\u76ee\u5f55\u5185\u5bb9\u7684\u529f\u80fd\uff08Christoph Moench-Tegeder\uff09\u00a7 \u76f8\u5e94\u51fd\u6570\u4e3a pg_ls_archive_statusdir()\u3002", "title": "\u6dfb\u52a0\u5217\u51fa\u5f52\u6863\u76ee\u5f55\u5185\u5bb9\u7684\u529f\u80fd", "commits": ["c48101620"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "e6626f0bc2eb75191d4150b910839d61f290fd05e5fc97aeed2ce77019bdad02", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["c48101620"]], "identity_text": "Add the ability to list the contents of the archive directory (Christoph Moench-Tegeder) The function is pg_ls_archive_statusdir().", "commit_aliases": ["c48101620"], "source_commits": ["c48101620"], "source_entry_id": "12.0/changes/050", "db_id": "44f59927c80c6ce19c09bcaad9809ed9", "patch_ids": ["5af7e24b12382abc45a0cfc198266ec6"], "statement_hash": "3822bf912dbbf53da6c73b7808ea45fd9806bc5416188304b8153e4035b1bb66", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-04767aefdb4f4bd0", "migration": false}, {"id": "12.0-d81dcc440fc8183c", "cves": [], "html": "<p>\u6dfb\u52a0\u5217\u51fa\u4e34\u65f6\u76ee\u5f55\u5185\u5bb9\u7684\u529f\u80fd\uff08Nathan Bossart\uff09<a href=\"https://postgr.es/c/9cd92d1a3\">\u00a7</a></p>\n<p>\u76f8\u5e94\u51fd\u6570 <a href=\"/docs/12/functions-admin.html#FUNCTIONS-ADMIN-GENFILE-TABLE\" title=\"\u8868\u00a09.94.\u00a0\u901a\u7528\u6587\u4ef6\u8bbf\u95ee\u51fd\u6570\"><code>pg_ls_tmpdir()</code></a> \u5141\u8bb8\u9009\u62e9\u6027\u5730\u6307\u5b9a\u8868\u7a7a\u95f4\u3002</p>", "text": "\u6dfb\u52a0\u5217\u51fa\u4e34\u65f6\u76ee\u5f55\u5185\u5bb9\u7684\u529f\u80fd\uff08Nathan Bossart\uff09\u00a7 \u76f8\u5e94\u51fd\u6570 pg_ls_tmpdir() \u5141\u8bb8\u9009\u62e9\u6027\u5730\u6307\u5b9a\u8868\u7a7a\u95f4\u3002", "title": "\u6dfb\u52a0\u5217\u51fa\u4e34\u65f6\u76ee\u5f55\u5185\u5bb9\u7684\u529f\u80fd", "commits": ["9cd92d1a3"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "3269750cce0ea0d44364608e7db124f9609433d7350abc67fb1a48d320eac9c2", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["9cd92d1a3"]], "identity_text": "Add the ability to list the contents of temporary directories (Nathan Bossart) The function, pg_ls_tmpdir(), optionally allows specification of a tablespace.", "commit_aliases": ["9cd92d1a3"], "source_commits": ["9cd92d1a3"], "source_entry_id": "12.0/changes/051", "db_id": "35d97650b69ee9e7b5e23634c5a04be2", "patch_ids": ["699b4ae99df4cc4a501b38e4e87d2215"], "statement_hash": "f099c2ec1d95df70dbf3ccf67c560399be4473d55fc818cdfbfa0769ba515bcb", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d81dcc440fc8183c", "migration": false}, {"id": "12.0-93b26000ef0710c3", "cves": [], "html": "<p>\u5728\u7cfb\u7edf\u89c6\u56fe <a href=\"/docs/12/monitoring-stats.html#PG-STAT-SSL-VIEW\" title=\"\u8868\u00a027.8.\u00a0pg_stat_ssl \u89c6\u56fe\"><code>pg_stat_ssl</code></a> \u4e2d\u6dfb\u52a0\u5ba2\u6237\u7aef\u8bc1\u4e66\u4fe1\u606f\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/f60a0e967\">\u00a7</a></p>\n<p>\u65b0\u589e\u5217\u4e3a <code>client_serial</code> \u548c <code>issuer_dn</code>\u3002\u4e3a\u4f7f\u542b\u4e49\u66f4\u6e05\u695a\uff0c\u5c06 <code>clientdn</code> \u5217\u91cd\u547d\u540d\u4e3a <code>client_dn</code>\u3002</p>", "text": "\u5728\u7cfb\u7edf\u89c6\u56fe pg_stat_ssl \u4e2d\u6dfb\u52a0\u5ba2\u6237\u7aef\u8bc1\u4e66\u4fe1\u606f\uff08Peter Eisentraut\uff09\u00a7 \u65b0\u589e\u5217\u4e3a client_serial \u548c issuer_dn\u3002\u4e3a\u4f7f\u542b\u4e49\u66f4\u6e05\u695a\uff0c\u5c06 clientdn \u5217\u91cd\u547d\u540d\u4e3a client_dn\u3002", "title": "\u5728\u7cfb\u7edf\u89c6\u56fe pg_stat_ssl \u4e2d\u6dfb\u52a0\u5ba2\u6237\u7aef\u8bc1\u4e66\u4fe1\u606f", "commits": ["f60a0e967"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "44df26b136ef8cc7e904f8d776e24411c961322afd36851b77fc6ce7e4c64aca", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["f60a0e967"]], "identity_text": "Add information about the client certificate to the system view pg_stat_ssl (Peter Eisentraut) The new columns are client_serial and issuer_dn. Column clientdn has been renamed to client_dn for clarity.", "commit_aliases": ["f60a0e967"], "source_commits": ["f60a0e967"], "source_entry_id": "12.0/changes/052", "db_id": "6c72058028ea47317a98891f534ed8a7", "patch_ids": ["6cbb2d11b77e3d135899cee82c5c0707"], "statement_hash": "cc8cc192fbbbb01f24f535baed9ba4d2e7cc9d450fa006557e57e1e06b138580", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-93b26000ef0710c3", "migration": false}, {"id": "12.0-3358c03ad5ed1dfa", "cves": [], "html": "<p>\u9650\u5236\u65e0\u7279\u6743\u7528\u6237\u5728 <code>pg_stat_ssl</code> \u4e2d\u53ef\u89c1\u7684\u884c\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/f9692a769\">\u00a7</a></p>", "text": "\u9650\u5236\u65e0\u7279\u6743\u7528\u6237\u5728 pg_stat_ssl \u4e2d\u53ef\u89c1\u7684\u884c\uff08Peter Eisentraut\uff09\u00a7", "title": "\u9650\u5236\u65e0\u7279\u6743\u7528\u6237\u5728 pg_stat_ssl \u4e2d\u53ef\u89c1\u7684\u884c", "commits": ["f9692a769"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "92840b7afa98b5608c5e2d906bedc4ea677be25d60eb1f3fefe9dce1e204774f", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["f9692a769"]], "identity_text": "Restrict visibility of rows in pg_stat_ssl for unprivileged users (Peter Eisentraut)", "commit_aliases": ["f9692a769"], "source_commits": ["f9692a769"], "source_entry_id": "12.0/changes/053", "db_id": "bd65097d349eebb773c52bafa69d63ed", "patch_ids": ["837381846f978f398f7eb41dd00a24bf"], "statement_hash": "7f8058df3ddd9d7eb47bf87312e4f62e9ff0976aaa60cd34b3d7117a26d0a4b3", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-3358c03ad5ed1dfa", "migration": false}, {"id": "12.0-5859492d645fcf0a", "cves": [], "html": "<p>\u670d\u52a1\u5668\u542f\u52a8\u65f6\u8f93\u51fa\u5305\u542b\u670d\u52a1\u5668\u7248\u672c\u53f7\u7684\u65e5\u5fd7\u6d88\u606f\uff08Christoph Berg\uff09<a href=\"https://postgr.es/c/689d15e95\">\u00a7</a></p>", "text": "\u670d\u52a1\u5668\u542f\u52a8\u65f6\u8f93\u51fa\u5305\u542b\u670d\u52a1\u5668\u7248\u672c\u53f7\u7684\u65e5\u5fd7\u6d88\u606f\uff08Christoph Berg\uff09\u00a7", "title": "\u670d\u52a1\u5668\u542f\u52a8\u65f6\u8f93\u51fa\u5305\u542b\u670d\u52a1\u5668\u7248\u672c\u53f7\u7684\u65e5\u5fd7\u6d88\u606f", "commits": ["689d15e95"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "30418669abaf3e5b618ec8a003fc8fe14bc0f42b52eeee48ce6b6eebc991278d", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["689d15e95"]], "identity_text": "At server start, emit a log message including the server version number (Christoph Berg)", "commit_aliases": ["689d15e95"], "source_commits": ["689d15e95"], "source_entry_id": "12.0/changes/054", "db_id": "a9627a3a69f0173c6851453c39f87593", "patch_ids": ["f39c9a0453fb207aaa502b85d00220e1"], "statement_hash": "16f2ac3abb1b6738625dc61b54b7a1938a77e6cba2736afdf3c79ac94fc66399", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-5859492d645fcf0a", "migration": false}, {"id": "12.0-d776884225d7ed24", "cves": [], "html": "<p>\u5982\u679c\u65b0\u8fde\u63a5\u7acb\u5373\u88ab\u5173\u95ed\uff0c\u5219\u907f\u514d\u8bb0\u5f55 <span>\u201c<span>incomplete startup packet</span>\u201d</span>\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/342cb650e\">\u00a7</a></p>\n<p>\u8fd9\u907f\u514d\u4e86\u67d0\u4e9b\u76d1\u63a7\u65b9\u5f0f\u4ea7\u751f\u5927\u91cf\u65e0\u7528\u65e5\u5fd7\u3002</p>", "text": "\u5982\u679c\u65b0\u8fde\u63a5\u7acb\u5373\u88ab\u5173\u95ed\uff0c\u5219\u907f\u514d\u8bb0\u5f55 \u201cincomplete startup packet\u201d\uff08Tom Lane\uff09\u00a7 \u8fd9\u907f\u514d\u4e86\u67d0\u4e9b\u76d1\u63a7\u65b9\u5f0f\u4ea7\u751f\u5927\u91cf\u65e0\u7528\u65e5\u5fd7\u3002", "title": "\u5982\u679c\u65b0\u8fde\u63a5\u7acb\u5373\u88ab\u5173\u95ed\uff0c\u5219\u907f\u514d\u8bb0\u5f55 \u201cincomplete startup packet\u201d", "commits": ["342cb650e"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "fd5d2b4e925e104ccf9a33d5516c564696d61aebc9d10062e52b58a49e7ce974", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["342cb650e"]], "identity_text": "Prevent logging incomplete startup packet if a new connection is immediately closed (Tom Lane) This avoids log spam from certain forms of monitoring.", "commit_aliases": ["342cb650e"], "source_commits": ["342cb650e"], "source_entry_id": "12.0/changes/055", "db_id": "cbe93a53e08c62a783652a51c09b1d70", "patch_ids": ["e63562800703cb9347b14d671890e760"], "statement_hash": "30b9c613c04e8772efbec9f572fbbb05b0e6cd766da9c5cc894cdc7796a94956", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d776884225d7ed24", "migration": false}, {"id": "12.0-4d5e3a53e267b169", "cves": [], "html": "<p>\u5982\u679c\u8bbe\u7f6e\u4e86<a href=\"/docs/12/runtime-config-logging.html#GUC-APPLICATION-NAME\">application_name</a>\uff0c\u5219\u5728<a href=\"/docs/12/runtime-config-logging.html#GUC-LOG-CONNECTIONS\">log_connections</a>\u65e5\u5fd7\u6d88\u606f\u4e2d\u5305\u542b\u5b83\uff08Don Seiler\uff09<a href=\"https://postgr.es/c/8bddc8640\">\u00a7</a></p>", "text": "\u5982\u679c\u8bbe\u7f6e\u4e86application_name\uff0c\u5219\u5728log_connections\u65e5\u5fd7\u6d88\u606f\u4e2d\u5305\u542b\u5b83\uff08Don Seiler\uff09\u00a7", "title": "\u5982\u679c\u8bbe\u7f6e\u4e86application_name\uff0c\u5219\u5728log_connections\u65e5\u5fd7\u6d88\u606f\u4e2d\u5305\u542b\u5b83", "commits": ["8bddc8640"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "2945374cc1bf50f76c3573d36b1c89edf29c573139510c4e6c6452160cf317ea", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["8bddc8640"]], "identity_text": "Include the guc-application-name , if set, in guc-log-connections log messages (Don Seiler)", "commit_aliases": ["8bddc8640"], "source_commits": ["8bddc8640"], "source_entry_id": "12.0/changes/056", "db_id": "e70c44907c9b372f20073ff08874e948", "patch_ids": ["ea0e9adf5861d3437321d7f75009d0c7"], "statement_hash": "37a703b1ed774870d573e2ec990c95d768544734be6b4914df498b1334ae33f7", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-4d5e3a53e267b169", "migration": false}, {"id": "12.0-af30ad1a69ed7935", "cves": [], "html": "<p>\u5982\u679c\u8bbe\u7f6e\u4e86\u96c6\u7fa4\u540d\u79f0\uff0c\u5219\u8ba9 WAL \u63a5\u6536\u8fdb\u7a0b\u5c06\u5176\u5e94\u7528\u540d\u79f0\u8bbe\u7f6e\u4e3a\u8be5\u96c6\u7fa4\u540d\u79f0\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/6ae578a91\">\u00a7</a></p>", "text": "\u5982\u679c\u8bbe\u7f6e\u4e86\u96c6\u7fa4\u540d\u79f0\uff0c\u5219\u8ba9 WAL \u63a5\u6536\u8fdb\u7a0b\u5c06\u5176\u5e94\u7528\u540d\u79f0\u8bbe\u7f6e\u4e3a\u8be5\u96c6\u7fa4\u540d\u79f0\uff08Peter Eisentraut\uff09\u00a7", "title": "\u5982\u679c\u8bbe\u7f6e\u4e86\u96c6\u7fa4\u540d\u79f0\uff0c\u5219\u8ba9 WAL \u63a5\u6536\u8fdb\u7a0b\u5c06\u5176\u5e94\u7528\u540d\u79f0\u8bbe\u7f6e\u4e3a\u8be5\u96c6\u7fa4\u540d\u79f0", "commits": ["6ae578a91"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "379fb44bec0c7de36e1ae469785e6299b112d05fc2ca21316382d73a4ca779a4", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["6ae578a91"]], "identity_text": "Make the walreceiver set its application name to the cluster name, if set (Peter Eisentraut)", "commit_aliases": ["6ae578a91"], "source_commits": ["6ae578a91"], "source_entry_id": "12.0/changes/057", "db_id": "a6c731bfc4001afe7bcb4cc805a444cf", "patch_ids": ["503916f027de12bf9df164282ff77256"], "statement_hash": "06ccc866814448b07a282e2c44298bb5fe46a3b8f140d76610b3a325ab5820ee", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-af30ad1a69ed7935", "migration": false}, {"id": "12.0-5a6c8fc6d412e64c", "cves": [], "html": "<p>\u5728 <a href=\"/docs/12/monitoring-stats.html#PG-STAT-REPLICATION-VIEW\" title=\"\u8868\u00a027.5.\u00a0pg_stat_replication \u89c6\u56fe\"><code>pg_stat_replication</code></a> \u4e2d\u6dfb\u52a0\u6700\u540e\u6536\u5230\u7684\u5907\u5e93\u6d88\u606f\u7684\u65f6\u95f4\u6233\uff08Lim Myungkyu\uff09<a href=\"https://postgr.es/c/7fee252f6\">\u00a7</a></p>", "text": "\u5728 pg_stat_replication \u4e2d\u6dfb\u52a0\u6700\u540e\u6536\u5230\u7684\u5907\u5e93\u6d88\u606f\u7684\u65f6\u95f4\u6233\uff08Lim Myungkyu\uff09\u00a7", "title": "\u5728 pg_stat_replication \u4e2d\u6dfb\u52a0\u6700\u540e\u6536\u5230\u7684\u5907\u5e93\u6d88\u606f\u7684\u65f6\u95f4\u6233", "commits": ["7fee252f6"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "3b081bf3364a93d93f4e2236d76d658d6461d3eb28c852cf7cfecccc654eaa61", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["7fee252f6"]], "identity_text": "Add the timestamp of the last received standby message to pg_stat_replication (Lim Myungkyu)", "commit_aliases": ["7fee252f6"], "source_commits": ["7fee252f6"], "source_entry_id": "12.0/changes/058", "db_id": "03c13610f51cfa6eba4bbc060b5bf23e", "patch_ids": ["1d685cd690b627a7c7d1db51a6c53c59"], "statement_hash": "05c18481f5084affc880a97013075dea7a05e2a0422b06c609cf31b29664dd86", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-5a6c8fc6d412e64c", "migration": false}, {"id": "12.0-a76833bc31f00269", "cves": [], "html": "<p>\u4e3a <acronym>WAL</acronym> \u6bb5\u7684 fsync \u6dfb\u52a0<a href=\"/docs/12/monitoring-stats.html#WAIT-EVENT-TABLE\" title=\"\u8868\u00a027.4.\u00a0wait_event \u63cf\u8ff0\">\u7b49\u5f85\u4e8b\u4ef6</a>\uff08Konstantin Knizhnik\uff09<a href=\"https://postgr.es/c/c55de5e51\">\u00a7</a></p>", "text": "\u4e3a WAL \u6bb5\u7684 fsync \u6dfb\u52a0\u7b49\u5f85\u4e8b\u4ef6\uff08Konstantin Knizhnik\uff09\u00a7", "title": "\u4e3a WAL \u6bb5\u7684 fsync \u6dfb\u52a0\u7b49\u5f85\u4e8b\u4ef6", "commits": ["c55de5e51"], "section": "\u670d\u52a1\u5668 / \u76d1\u63a7", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.6", "source_hash": "c0338f32bb848503fae48c968325b47aa8d88e97fb38decfb096a52561bc575d", "section_path": ["\u670d\u52a1\u5668", "\u76d1\u63a7"], "commit_groups": [["c55de5e51"]], "identity_text": "Add a wait event for fsync of WAL segments (Konstantin Knizhnik)", "commit_aliases": ["c55de5e51"], "source_commits": ["c55de5e51"], "source_entry_id": "12.0/changes/059", "db_id": "8b832c17dfeb1f3396cab67dc2dc58a3", "patch_ids": ["6119e7c33c7980c6d37f37a44677e110"], "statement_hash": "545c9a81b3049bb5f66244fbb255c41d2882204ba2284f66117fde18dd6880a7", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-a76833bc31f00269", "migration": false}, {"id": "12.0-0d095859e382f0d0", "cves": [], "html": "<p>\u6dfb\u52a0 <a href=\"/docs/12/gssapi-auth.html\" title=\"20.6.\u00a0GSSAPI \u8ba4\u8bc1\"><acronym>GSSAPI</acronym></a> \u52a0\u5bc6\u652f\u6301\uff08Robbie Harwood\uff0cStephen Frost\uff09<a href=\"https://postgr.es/c/b0b39f72b\">\u00a7</a></p>\n<p>\u6b64\u7279\u6027\u5141\u8bb8\u5728\u4f7f\u7528 GSSAPI \u8ba4\u8bc1\u65f6\u52a0\u5bc6 TCP/IP \u8fde\u63a5\uff0c\u65e0\u9700\u53e6\u5916\u914d\u7f6e SSL \u7b49\u52a0\u5bc6\u8bbe\u65bd\u3002\u4e3a\u652f\u6301\u6b64\u529f\u80fd\uff0c\u5728 <a href=\"/docs/12/client-authentication.html#AUTH-PG-HBA-CONF\" title=\"20.1.\u00a0pg_hba.conf \u6587\u4ef6\"><code>pg_hba.conf</code></a> \u4e2d\u589e\u52a0\u4e86 <code>hostgssenc</code> \u548c <code>hostnogssenc</code> \u8bb0\u5f55\u7c7b\u578b\uff0c\u7528\u4e8e\u9009\u62e9\u4f7f\u7528\u6216\u4e0d\u4f7f\u7528 GSSAPI \u52a0\u5bc6\u7684\u8fde\u63a5\uff0c\u5206\u522b\u5bf9\u5e94\u73b0\u6709\u7684 <code>hostssl</code> \u548c <code>hostnossl</code> \u8bb0\u5f55\u7c7b\u578b\u3002\u53e6\u5916\uff0c\u8fd8\u589e\u52a0\u4e86 libpq \u9009\u9879<a href=\"/docs/12/libpq.html#LIBPQ-CONNECT-GSSENCMODE\">gssencmode</a>\u548c\u7cfb\u7edf\u89c6\u56fe<a href=\"/docs/12/monitoring-stats.html#PG-STAT-GSSAPI-VIEW\" title=\"\u8868\u00a027.9.\u00a0pg_stat_gssapi \u89c6\u56fe\">pg_stat_gssapi</a>\u3002</p>", "text": "\u6dfb\u52a0 GSSAPI \u52a0\u5bc6\u652f\u6301\uff08Robbie Harwood\uff0cStephen Frost\uff09\u00a7 \u6b64\u7279\u6027\u5141\u8bb8\u5728\u4f7f\u7528 GSSAPI \u8ba4\u8bc1\u65f6\u52a0\u5bc6 TCP/IP \u8fde\u63a5\uff0c\u65e0\u9700\u53e6\u5916\u914d\u7f6e SSL \u7b49\u52a0\u5bc6\u8bbe\u65bd\u3002\u4e3a\u652f\u6301\u6b64\u529f\u80fd\uff0c\u5728 pg_hba.conf \u4e2d\u589e\u52a0\u4e86 hostgssenc \u548c hostnogssenc \u8bb0\u5f55\u7c7b\u578b\uff0c\u7528\u4e8e\u9009\u62e9\u4f7f\u7528\u6216\u4e0d\u4f7f\u7528 GSSAPI \u52a0\u5bc6\u7684\u8fde\u63a5\uff0c\u5206\u522b\u5bf9\u5e94\u73b0\u6709\u7684 hostssl \u548c hostnossl \u8bb0\u5f55\u7c7b\u578b\u3002\u53e6\u5916\uff0c\u8fd8\u589e\u52a0\u4e86 libpq \u9009\u9879gssencmode\u548c\u7cfb\u7edf\u89c6\u56fepg_stat_gssapi\u3002", "title": "\u6dfb\u52a0 GSSAPI \u52a0\u5bc6\u652f\u6301", "commits": ["b0b39f72b"], "section": "\u670d\u52a1\u5668 / Authentication", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.7", "source_hash": "8ca56df214042e5db6658fd58897b4ac6bfc47491c50d2704f4d03c76474ea2e", "section_path": ["\u670d\u52a1\u5668", "Authentication"], "commit_groups": [["b0b39f72b"]], "identity_text": "Add GSSAPI encryption support (Robbie Harwood, Stephen Frost) This feature allows TCP/IP connections to be encrypted when using GSSAPI authentication, without having to set up a separate encryption facility such as SSL. In support of this, add hostgssenc and hostnogssenc record types in pg_hba.conf for selecting connections that do or do not use GSSAPI encryption, corresponding to the existing hostssl and hostnossl record types. There is also a new libpq-connect-gssencmode libpq option, and a pg-stat-gssapi-view system view.", "commit_aliases": ["b0b39f72b"], "source_commits": ["b0b39f72b"], "source_entry_id": "12.0/changes/060", "db_id": "af2ced83486420278b0e6f7820bc37a6", "patch_ids": ["5553de51a5ca735981d2644ae3276226"], "statement_hash": "f5d2b4899a21138b80cd99e8b5275dc9b091add746da5505bb86fb88aa6f87fa", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-0d095859e382f0d0", "migration": false}, {"id": "12.0-f898a00b6bfc35e2", "cves": [], "html": "<p>\u5141\u8bb8 <code>pg_hba.conf</code> \u7684 <a href=\"/docs/12/auth-cert.html\" title=\"20.12.\u00a0\u8bc1\u4e66\u8ba4\u8bc1\"><code>clientcert</code></a> \u9009\u9879\u68c0\u67e5\u6570\u636e\u5e93\u7528\u6237\u540d\u662f\u5426\u4e0e\u5ba2\u6237\u7aef\u8bc1\u4e66\u7684\u901a\u7528\u540d\u5339\u914d\uff08Julian Markwort\uff0cMarius Timmer\uff09<a href=\"https://postgr.es/c/0516c61b7\">\u00a7</a></p>\n<p>\u6b64\u9879\u65b0\u68c0\u67e5\u901a\u8fc7 <code>clientcert=verify-full</code> \u542f\u7528\u3002</p>", "text": "\u5141\u8bb8 pg_hba.conf \u7684 clientcert \u9009\u9879\u68c0\u67e5\u6570\u636e\u5e93\u7528\u6237\u540d\u662f\u5426\u4e0e\u5ba2\u6237\u7aef\u8bc1\u4e66\u7684\u901a\u7528\u540d\u5339\u914d\uff08Julian Markwort\uff0cMarius Timmer\uff09\u00a7 \u6b64\u9879\u65b0\u68c0\u67e5\u901a\u8fc7 clientcert=verify-full \u542f\u7528\u3002", "title": "\u5141\u8bb8 pg_hba.conf \u7684 clientcert \u9009\u9879\u68c0\u67e5\u6570\u636e\u5e93\u7528\u6237\u540d\u662f\u5426\u4e0e\u5ba2\u6237\u7aef\u8bc1\u4e66\u7684\u901a\u7528\u540d\u5339\u914d", "commits": ["0516c61b7"], "section": "\u670d\u52a1\u5668 / Authentication", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.7", "source_hash": "c59b3cd60211972feae559f6be8fdb1ac04da95f1dcd9d7c5371f1142d352c20", "section_path": ["\u670d\u52a1\u5668", "Authentication"], "commit_groups": [["0516c61b7"]], "identity_text": "Allow the clientcert pg_hba.conf option to check that the database user name matches the client certificate's common name (Julian Markwort, Marius Timmer) This new check is enabled with clientcert=verify-full.", "commit_aliases": ["0516c61b7"], "source_commits": ["0516c61b7"], "source_entry_id": "12.0/changes/061", "db_id": "27a7574cf073db10069f0463775c530a", "patch_ids": ["ebffc016ccb6278823269fe2a6466cbf"], "statement_hash": "8a885ff8e7f8d76c95e5494ceeb901885e4db7507a136a4ed03dc8b8f989590f", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-f898a00b6bfc35e2", "migration": false}, {"id": "12.0-6071405065297199", "cves": [], "html": "<p>\u5141\u8bb8\u4f7f\u7528 <acronym>DNS SRV</acronym> \u8bb0\u5f55\u53d1\u73b0 <a href=\"/docs/12/auth-ldap.html\" title=\"20.10.\u00a0LDAP \u8ba4\u8bc1\"><acronym>LDAP</acronym></a> \u670d\u52a1\u5668\uff08Thomas Munro\uff09<a href=\"https://postgr.es/c/0f086f84a\">\u00a7</a></p>\n<p>\u8fd9\u4f7f\u6307\u5b9a <code>ldapserver</code> \u4e0d\u518d\u662f\u5fc5\u9700\u7684\u3002\u4ec5\u5f53 <span>PostgreSQL</span> \u4f7f\u7528 <span>OpenLDAP</span> \u7f16\u8bd1\u65f6\u624d\u652f\u6301\u6b64\u529f\u80fd\u3002</p>", "text": "\u5141\u8bb8\u4f7f\u7528 DNS SRV \u8bb0\u5f55\u53d1\u73b0 LDAP \u670d\u52a1\u5668\uff08Thomas Munro\uff09\u00a7 \u8fd9\u4f7f\u6307\u5b9a ldapserver \u4e0d\u518d\u662f\u5fc5\u9700\u7684\u3002\u4ec5\u5f53 PostgreSQL \u4f7f\u7528 OpenLDAP \u7f16\u8bd1\u65f6\u624d\u652f\u6301\u6b64\u529f\u80fd\u3002", "title": "\u5141\u8bb8\u4f7f\u7528 DNS SRV \u8bb0\u5f55\u53d1\u73b0 LDAP \u670d\u52a1\u5668", "commits": ["0f086f84a"], "section": "\u670d\u52a1\u5668 / Authentication", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.7", "source_hash": "7844caa968664424292ca9f4b460419b21fa696fefffab6059c6bb998e807e01", "section_path": ["\u670d\u52a1\u5668", "Authentication"], "commit_groups": [["0f086f84a"]], "identity_text": "Allow discovery of an LDAP server using DNS SRV records (Thomas Munro) This avoids the requirement of specifying ldapserver. It is only supported if PostgreSQL is compiled with OpenLDAP.", "commit_aliases": ["0f086f84a"], "source_commits": ["0f086f84a"], "source_entry_id": "12.0/changes/062", "db_id": "2b70b87d5f54be7e84e063c844a8d8ed", "patch_ids": ["1c6e7e0d9f6c2a0c8152089c021a1cb2"], "statement_hash": "9bbc2a76430bcf54366fe0228f0f7cd03c6811c52e7c2a5a6745b87f3ac9b681", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-6071405065297199", "migration": false}, {"id": "12.0-d63b0f2c75226c54", "cves": [], "html": "<p>\u6dfb\u52a0\u4f7f\u7528<a href=\"/docs/12/app-pgchecksums.html\" title=\"pg_checksums\"><span><span>pg_checksums</span></span></a>\u542f\u7528/\u7981\u7528\u96c6\u7fa4\u6821\u9a8c\u548c\u7684\u529f\u80fd\uff08Michael Banck\uff0cMicha\u00ebl Paquier\uff09<a href=\"https://postgr.es/c/ed308d783\">\u00a7</a></p>\n<p>\u6267\u884c\u8fd9\u4e9b\u64cd\u4f5c\u65f6\u5fc5\u987b\u5173\u95ed\u96c6\u7fa4\u3002</p>", "text": "\u6dfb\u52a0\u4f7f\u7528pg_checksums\u542f\u7528/\u7981\u7528\u96c6\u7fa4\u6821\u9a8c\u548c\u7684\u529f\u80fd\uff08Michael Banck\uff0cMicha\u00ebl Paquier\uff09\u00a7 \u6267\u884c\u8fd9\u4e9b\u64cd\u4f5c\u65f6\u5fc5\u987b\u5173\u95ed\u96c6\u7fa4\u3002", "title": "\u6dfb\u52a0\u4f7f\u7528pg_checksums\u542f\u7528/\u7981\u7528\u96c6\u7fa4\u6821\u9a8c\u548c\u7684\u529f\u80fd", "commits": ["ed308d783"], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "1064e52d8a4fd448397dd404805794591a4e0e796604af38c7bce5bd07bd6b50", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["ed308d783"]], "identity_text": "Add ability to enable/disable cluster checksums using app-pgchecksums (Michael Banck, Micha\u00ebl Paquier) The cluster must be shut down for these operations.", "commit_aliases": ["ed308d783"], "source_commits": ["ed308d783"], "source_entry_id": "12.0/changes/063", "db_id": "8c5ded51c7df5331fd8f2767cf9fb9db", "patch_ids": ["25adc6ae54cecdc0589e93ca56bb75a5"], "statement_hash": "038bf65264da295ea7994f884f5844dda66034c3e14e15df2c6f3e33a1c89ce9", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d63b0f2c75226c54", "migration": false}, {"id": "12.0-226553203992bb65", "cves": [], "html": "<p>\u5c06<a href=\"/docs/12/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-COST-DELAY\">autovacuum_vacuum_cost_delay</a>\u7684\u9ed8\u8ba4\u503c\u964d\u4f4e\u5230 2ms\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/cbccac371\">\u00a7</a></p>\n<p>\u8fd9\u4f7f\u81ea\u52a8\u6e05\u7406\u64cd\u4f5c\u9ed8\u8ba4\u80fd\u591f\u66f4\u5feb\u5730\u6267\u884c\u3002</p>", "text": "\u5c06autovacuum_vacuum_cost_delay\u7684\u9ed8\u8ba4\u503c\u964d\u4f4e\u5230 2ms\uff08Tom Lane\uff09\u00a7 \u8fd9\u4f7f\u81ea\u52a8\u6e05\u7406\u64cd\u4f5c\u9ed8\u8ba4\u80fd\u591f\u66f4\u5feb\u5730\u6267\u884c\u3002", "title": "\u5c06autovacuum_vacuum_cost_delay\u7684\u9ed8\u8ba4\u503c\u964d\u4f4e\u5230 2ms", "commits": ["cbccac371"], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "3254cf54eea919635f6e469dfc8297558b3150a4b6a4b744f71e239b830664f5", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["cbccac371"]], "identity_text": "Reduce the default value of guc-autovacuum-vacuum-cost-delay to 2ms (Tom Lane) This allows autovacuum operations to proceed faster by default.", "commit_aliases": ["cbccac371"], "source_commits": ["cbccac371"], "source_entry_id": "12.0/changes/064", "db_id": "79efda8d1b9e59331b52a091ce7ce3ae", "patch_ids": ["d784ca1bae1fd27cb21d999a9cfd6c7f"], "statement_hash": "678ee6fe6b818c27c73929bb5559d0b3c2d3e40226eba442e4062aae37b76df9", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-226553203992bb65", "migration": false}, {"id": "12.0-c6770f928987c3c6-1", "cves": [], "html": "<p>\u5141\u8bb8<a href=\"/docs/12/runtime-config-resource.html#GUC-VACUUM-COST-DELAY\">vacuum_cost_delay</a>\u63a5\u53d7\u5c0f\u6570\u503c\uff0c\u4ee5\u6307\u5b9a\u4e9a\u6beb\u79d2\u7ea7\u5ef6\u8fdf\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/caf626b2c\">\u00a7</a></p>", "text": "\u5141\u8bb8vacuum_cost_delay\u63a5\u53d7\u5c0f\u6570\u503c\uff0c\u4ee5\u6307\u5b9a\u4e9a\u6beb\u79d2\u7ea7\u5ef6\u8fdf\uff08Tom Lane\uff09\u00a7", "title": "\u5141\u8bb8vacuum_cost_delay\u63a5\u53d7\u5c0f\u6570\u503c\uff0c\u4ee5\u6307\u5b9a\u4e9a\u6beb\u79d2\u7ea7\u5ef6\u8fdf", "commits": ["caf626b2c"], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "2690dfdeb6cd1016f05cefb591cedf1de056e40d71e39f8ea15f6d9f12226f73", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["caf626b2c"]], "identity_text": "Allow guc-vacuum-cost-delay to specify sub-millisecond delays, by accepting fractional values (Tom Lane)", "commit_aliases": ["caf626b2c"], "source_commits": ["caf626b2c"], "source_entry_id": "12.0/changes/065", "db_id": "d4e1bc8b17434d8d2d0469cdaa5d93ae", "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "statement_hash": "8f972da930c11e67d7de75301c6ee12d149c8f9ceaa62795c18bb66ec21bdfbb", "relations": [{"rule": 2, "type": "related", "target": "5e44aaefe9bbbd2a2e24dae94715b670", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}}, {"rule": 2, "type": "related", "target": "db6d9a82c11a3df46915bb93d1b3da44", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}}], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-c6770f928987c3c6-1", "migration": false}, {"id": "12.0-c6770f928987c3c6-2", "cves": [], "html": "<p>\u5141\u8bb8\u65f6\u95f4\u7c7b\u670d\u52a1\u5668\u53c2\u6570\u4f7f\u7528<a href=\"/docs/12/runtime-config.html#CONFIG-SETTING\" title=\"19.1.\u00a0\u8bbe\u7f6e\u53c2\u6570\">\u5fae\u79d2</a>\uff08<code>us</code>\uff09\u5355\u4f4d\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/caf626b2c\">\u00a7</a></p>", "text": "\u5141\u8bb8\u65f6\u95f4\u7c7b\u670d\u52a1\u5668\u53c2\u6570\u4f7f\u7528\u5fae\u79d2\uff08us\uff09\u5355\u4f4d\uff08Tom Lane\uff09\u00a7", "title": "\u5141\u8bb8\u65f6\u95f4\u7c7b\u670d\u52a1\u5668\u53c2\u6570\u4f7f\u7528\u5fae\u79d2\uff08us\uff09\u5355\u4f4d", "commits": ["caf626b2c"], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "e25b7020492383bf3922b8d9e1d8c7118caaba8d6c3bb00e48abd2653a962d69", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["caf626b2c"]], "identity_text": "Allow time-based server parameters to use units of microseconds (us) (Tom Lane)", "commit_aliases": ["caf626b2c"], "source_commits": ["caf626b2c"], "source_entry_id": "12.0/changes/066", "db_id": "db6d9a82c11a3df46915bb93d1b3da44", "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "statement_hash": "6c3eb4fc32386e66bfecee45a26115849e5fee7492e4e80845853e61eb2c4031", "relations": [{"rule": 2, "type": "related", "target": "5e44aaefe9bbbd2a2e24dae94715b670", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}}, {"rule": 2, "type": "related", "target": "d4e1bc8b17434d8d2d0469cdaa5d93ae", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}}], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-c6770f928987c3c6-2", "migration": false}, {"id": "12.0-7f95c5bd99d6632c", "cves": [], "html": "<p>\u5141\u8bb8\u6574\u6570\u670d\u52a1\u5668\u53c2\u6570\u63a5\u53d7\u5c0f\u6570\u8f93\u5165\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/1a83a80a2\">\u00a7</a></p>\n<p>\u4f8b\u5982\uff0c\u867d\u7136 <code>work_mem</code> \u662f\u6574\u6570\u53c2\u6570\uff0c\u73b0\u5728\u4e5f\u5141\u8bb8\u6267\u884c <code>SET work_mem = '30.1GB'</code>\u3002\u5b8c\u6210\u6240\u6709\u5fc5\u8981\u7684\u5355\u4f4d\u8f6c\u6362\u540e\uff0c\u8be5\u503c\u4f1a\u88ab\u820d\u5165\u4e3a\u6574\u6570\u3002</p>", "text": "\u5141\u8bb8\u6574\u6570\u670d\u52a1\u5668\u53c2\u6570\u63a5\u53d7\u5c0f\u6570\u8f93\u5165\uff08Tom Lane\uff09\u00a7 \u4f8b\u5982\uff0c\u867d\u7136 work_mem \u662f\u6574\u6570\u53c2\u6570\uff0c\u73b0\u5728\u4e5f\u5141\u8bb8\u6267\u884c SET work_mem = '30.1GB'\u3002\u5b8c\u6210\u6240\u6709\u5fc5\u8981\u7684\u5355\u4f4d\u8f6c\u6362\u540e\uff0c\u8be5\u503c\u4f1a\u88ab\u820d\u5165\u4e3a\u6574\u6570\u3002", "title": "\u5141\u8bb8\u6574\u6570\u670d\u52a1\u5668\u53c2\u6570\u63a5\u53d7\u5c0f\u6570\u8f93\u5165", "commits": ["1a83a80a2"], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "519c06f06b28116c71b97bc7d5e99471fff1dbf18302ff3f71bbae049e8e549e", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["1a83a80a2"]], "identity_text": "Allow fractional input for integer server parameters (Tom Lane) For example, SET work_mem = '30.1GB' is now allowed, even though work_mem is an integer parameter. The value will be rounded to an integer after any required units conversion.", "commit_aliases": ["1a83a80a2"], "source_commits": ["1a83a80a2"], "source_entry_id": "12.0/changes/067", "db_id": "8aa09d4dd770f19237d9e7632fc72fa7", "patch_ids": ["8ae14da49f7e6185fabe335e14f808d2"], "statement_hash": "b89bf5779c0583e9200012c2eb1178aea239919334a255df4fc6c199c836b73b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-7f95c5bd99d6632c", "migration": false}, {"id": "12.0-c6770f928987c3c6-3", "cves": [], "html": "<p>\u5141\u8bb8\u4e3a\u6d6e\u70b9\u670d\u52a1\u5668\u53c2\u6570\u5b9a\u4e49\u5355\u4f4d\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/caf626b2c\">\u00a7</a></p>", "text": "\u5141\u8bb8\u4e3a\u6d6e\u70b9\u670d\u52a1\u5668\u53c2\u6570\u5b9a\u4e49\u5355\u4f4d\uff08Tom Lane\uff09\u00a7", "title": "\u5141\u8bb8\u4e3a\u6d6e\u70b9\u670d\u52a1\u5668\u53c2\u6570\u5b9a\u4e49\u5355\u4f4d", "commits": ["caf626b2c"], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "de2ed6bd4c7c755e21e580415c61f81493b00fa67a4d2660524b028c59be9833", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["caf626b2c"]], "identity_text": "Allow units to be defined for floating-point server parameters (Tom Lane)", "commit_aliases": ["caf626b2c"], "source_commits": ["caf626b2c"], "source_entry_id": "12.0/changes/068", "db_id": "5e44aaefe9bbbd2a2e24dae94715b670", "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "statement_hash": "866faafd99339b6ba844c84a093621e36b329b00d2c5c1a8d52695e8ec025ff3", "relations": [{"rule": 2, "type": "related", "target": "d4e1bc8b17434d8d2d0469cdaa5d93ae", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}}, {"rule": 2, "type": "related", "target": "db6d9a82c11a3df46915bb93d1b3da44", "evidence": {"same_day": true, "patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"], "ambiguous_patch_ids": ["9af19987686bdd2f1c08b4ebf043b8ae"]}}], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-c6770f928987c3c6-3", "migration": false}, {"id": "12.0-32ce4facf8d8733a", "cves": [], "html": "<p>\u6dfb\u52a0\u670d\u52a1\u5668\u53c2\u6570<a href=\"/docs/12/runtime-config-wal.html#GUC-WAL-RECYCLE\">wal_recycle</a>\u548c<a href=\"/docs/12/runtime-config-wal.html#GUC-WAL-INIT-ZERO\">wal_init_zero</a>\uff0c\u4ee5\u63a7\u5236 <acronym>WAL</acronym> \u6587\u4ef6\u7684\u5faa\u73af\u5229\u7528\uff08Jerry Jelinek\uff09<a href=\"https://postgr.es/c/475861b26\">\u00a7</a></p>\n<p>\u5728 <span>ZFS</span> \u7b49\u5199\u65f6\u590d\u5236\u6587\u4ef6\u7cfb\u7edf\u4e0a\uff0c\u907f\u514d\u6587\u4ef6\u5faa\u73af\u5229\u7528\u53ef\u80fd\u6709\u76ca\u3002</p>", "text": "\u6dfb\u52a0\u670d\u52a1\u5668\u53c2\u6570wal_recycle\u548cwal_init_zero\uff0c\u4ee5\u63a7\u5236 WAL \u6587\u4ef6\u7684\u5faa\u73af\u5229\u7528\uff08Jerry Jelinek\uff09\u00a7 \u5728 ZFS \u7b49\u5199\u65f6\u590d\u5236\u6587\u4ef6\u7cfb\u7edf\u4e0a\uff0c\u907f\u514d\u6587\u4ef6\u5faa\u73af\u5229\u7528\u53ef\u80fd\u6709\u76ca\u3002", "title": "\u6dfb\u52a0\u670d\u52a1\u5668\u53c2\u6570wal_recycle\u548cwal_init_zero\uff0c\u4ee5\u63a7\u5236 WAL \u6587\u4ef6\u7684\u5faa\u73af\u5229\u7528", "commits": ["475861b26"], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "888f1b1da1e4f56c7a80cc712c87263a797260644efbb18ea783c0cea0f76778", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["475861b26"]], "identity_text": "Add guc-wal-recycle and guc-wal-init-zero server parameters to control WAL file recycling (Jerry Jelinek) Avoiding file recycling can be beneficial on copy-on-write file systems like ZFS.", "commit_aliases": ["475861b26"], "source_commits": ["475861b26"], "source_entry_id": "12.0/changes/069", "db_id": "6ceebd303b6dda10bbdcb13a671d8b10", "patch_ids": ["9dddae56375a73b1baae68b89c9ce750"], "statement_hash": "50e6dbf273776de336ca40301e7aac5262fd98e7bff2192ffff9876d23b16912", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-32ce4facf8d8733a", "migration": false}, {"id": "12.0-d69e960219843ac4", "cves": [], "html": "<p>\u6dfb\u52a0\u670d\u52a1\u5668\u53c2\u6570<a href=\"/docs/12/runtime-config-connection.html#GUC-TCP-USER-TIMEOUT\">tcp_user_timeout</a>\uff0c\u4ee5\u63a7\u5236\u670d\u52a1\u5668\u7684 <acronym>TCP</acronym> \u8d85\u65f6\uff08Ryohei Nagaura\uff09<a href=\"https://postgr.es/c/249d64999\">\u00a7</a></p>", "text": "\u6dfb\u52a0\u670d\u52a1\u5668\u53c2\u6570tcp_user_timeout\uff0c\u4ee5\u63a7\u5236\u670d\u52a1\u5668\u7684 TCP \u8d85\u65f6\uff08Ryohei Nagaura\uff09\u00a7", "title": "\u6dfb\u52a0\u670d\u52a1\u5668\u53c2\u6570tcp_user_timeout\uff0c\u4ee5\u63a7\u5236\u670d\u52a1\u5668\u7684 TCP \u8d85\u65f6", "commits": ["249d64999"], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "d642d1a19f9824d2e62898f0e17814a4cb34f76be94813f71432b7f7785bd6ee", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["249d64999"]], "identity_text": "Add server parameter guc-tcp-user-timeout to control the server's TCP timeout (Ryohei Nagaura)", "commit_aliases": ["249d64999"], "source_commits": ["249d64999"], "source_entry_id": "12.0/changes/070", "db_id": "0ed4ea34f97ff2c06b766fe41327709b", "patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"], "statement_hash": "69550559682b2c1fadc5c1b575f589bd0e59de100f3237ddc146f4856b272b5e", "relations": [{"rule": 2, "type": "related", "target": "6cdb02aaf10f70c32c4fa280b47ff16d", "evidence": {"same_day": true, "patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"], "ambiguous_patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"]}}], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d69e960219843ac4", "migration": false}, {"id": "12.0-8251ee2b4c82e125", "cves": [], "html": "<p>\u5141\u8bb8\u63a7\u5236\u6700\u4f4e\u548c\u6700\u9ad8 <acronym>SSL</acronym> \u534f\u8bae\u7248\u672c\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/e73e67c71\">\u00a7</a></p>\n<p>\u76f8\u5e94\u670d\u52a1\u5668\u53c2\u6570\u4e3a<a href=\"/docs/12/runtime-config-connection.html#GUC-SSL-MIN-PROTOCOL-VERSION\">ssl_min_protocol_version</a>\u548c<a href=\"/docs/12/runtime-config-connection.html#GUC-SSL-MAX-PROTOCOL-VERSION\">ssl_max_protocol_version</a>\u3002</p>", "text": "\u5141\u8bb8\u63a7\u5236\u6700\u4f4e\u548c\u6700\u9ad8 SSL \u534f\u8bae\u7248\u672c\uff08Peter Eisentraut\uff09\u00a7 \u76f8\u5e94\u670d\u52a1\u5668\u53c2\u6570\u4e3assl_min_protocol_version\u548cssl_max_protocol_version\u3002", "title": "\u5141\u8bb8\u63a7\u5236\u6700\u4f4e\u548c\u6700\u9ad8 SSL \u534f\u8bae\u7248\u672c", "commits": ["e73e67c71"], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "b83f119fe5cf55bf22c2973dcf6cb937c6c878cba6cbd24bc26d5c9b039643e7", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["e73e67c71"]], "identity_text": "Allow control of the minimum and maximum SSL protocol versions (Peter Eisentraut) The server parameters are guc-ssl-min-protocol-version and guc-ssl-max-protocol-version .", "commit_aliases": ["e73e67c71"], "source_commits": ["e73e67c71"], "source_entry_id": "12.0/changes/071", "db_id": "72432347b54b14a0933a07843e97957d", "patch_ids": ["f158393a9e51514af39526d0c8ad7439"], "statement_hash": "ccd535a31852c4e68c3a2f9d61e7dfa84379ebead5ca90e77b376a5de061e4a6", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-8251ee2b4c82e125", "migration": false}, {"id": "12.0-dcbc5fbe9d71a7f3", "cves": [], "html": "<p>\u6dfb\u52a0\u670d\u52a1\u5668\u53c2\u6570<a href=\"/docs/12/runtime-config-preset.html#GUC-SSL-LIBRARY\">ssl_library</a>\uff0c\u4ee5\u62a5\u544a\u670d\u52a1\u5668\u4f7f\u7528\u7684 <acronym>SSL</acronym> \u5e93\u7248\u672c\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/98efa76fe\">\u00a7</a></p>", "text": "\u6dfb\u52a0\u670d\u52a1\u5668\u53c2\u6570ssl_library\uff0c\u4ee5\u62a5\u544a\u670d\u52a1\u5668\u4f7f\u7528\u7684 SSL \u5e93\u7248\u672c\uff08Peter Eisentraut\uff09\u00a7", "title": "\u6dfb\u52a0\u670d\u52a1\u5668\u53c2\u6570ssl_library\uff0c\u4ee5\u62a5\u544a\u670d\u52a1\u5668\u4f7f\u7528\u7684 SSL \u5e93\u7248\u672c", "commits": ["98efa76fe"], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "c2d38fbbfd9920f316b900017a773ef99bbe6d7f6b99f440a334ae7dc4279ae4", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["98efa76fe"]], "identity_text": "Add server parameter guc-ssl-library to report the SSL library version used by the server (Peter Eisentraut)", "commit_aliases": ["98efa76fe"], "source_commits": ["98efa76fe"], "source_entry_id": "12.0/changes/072", "db_id": "3855af7c97ea2a4c8ecf1f4709516eed", "patch_ids": ["eb942472372f8731c6b5a502d6546104"], "statement_hash": "5513e47998c1c3747f905801d8e64cac0ceb1e4416901638b02f47805c5e8eed", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-dcbc5fbe9d71a7f3", "migration": false}, {"id": "12.0-7f5dc52498547575", "cves": [], "html": "<p>\u6dfb\u52a0\u670d\u52a1\u5668\u53c2\u6570<a href=\"/docs/12/runtime-config-resource.html#GUC-SHARED-MEMORY-TYPE\">shared_memory_type</a>\uff0c\u4ee5\u63a7\u5236\u6240\u4f7f\u7528\u7684\u5171\u4eab\u5185\u5b58\u7c7b\u578b\uff08Andres Freund\uff09<a href=\"https://postgr.es/c/f1bebef60\">\u00a7</a></p>\n<p>\u8fd9\u5141\u8bb8\u5728\u9700\u8981\u65f6\u9009\u62e9 <span>System V</span> \u5171\u4eab\u5185\u5b58\u3002</p>", "text": "\u6dfb\u52a0\u670d\u52a1\u5668\u53c2\u6570shared_memory_type\uff0c\u4ee5\u63a7\u5236\u6240\u4f7f\u7528\u7684\u5171\u4eab\u5185\u5b58\u7c7b\u578b\uff08Andres Freund\uff09\u00a7 \u8fd9\u5141\u8bb8\u5728\u9700\u8981\u65f6\u9009\u62e9 System V \u5171\u4eab\u5185\u5b58\u3002", "title": "\u6dfb\u52a0\u670d\u52a1\u5668\u53c2\u6570shared_memory_type\uff0c\u4ee5\u63a7\u5236\u6240\u4f7f\u7528\u7684\u5171\u4eab\u5185\u5b58\u7c7b\u578b", "commits": ["f1bebef60"], "section": "\u670d\u52a1\u5668 / \u670d\u52a1\u5668\u914d\u7f6e", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.3.8", "source_hash": "342b81cd4c11499b931e9849dffcea0242c00c3c2e3486e07fefea2e5c9fe325", "section_path": ["\u670d\u52a1\u5668", "\u670d\u52a1\u5668\u914d\u7f6e"], "commit_groups": [["f1bebef60"]], "identity_text": "Add server parameter guc-shared-memory-type to control the type of shared memory to use (Andres Freund) This allows selection of System V shared memory, if desired.", "commit_aliases": ["f1bebef60"], "source_commits": ["f1bebef60"], "source_entry_id": "12.0/changes/073", "db_id": "0831c6f06b2e30b362d0bff986a78f99", "patch_ids": ["994f4d0dc536aef059cb0858c270b84b"], "statement_hash": "7ab2d8d4d055dad55dfda32512a034a11c742b2145c1baff7723a92bd60a6a19", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-7f5dc52498547575", "migration": false}, {"id": "12.0-411b6f3530d97654", "cves": [], "html": "<p>\u5141\u8bb8\u901a\u8fc7\u91cd\u65b0\u52a0\u8f7d\u914d\u7f6e\u66f4\u6539\u90e8\u5206\u6062\u590d\u53c2\u6570\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/13b89f96d\">\u00a7</a></p>\n<p>\u8fd9\u4e9b\u53c2\u6570\u662f<a href=\"/docs/12/runtime-config-wal.html#GUC-ARCHIVE-CLEANUP-COMMAND\">archive_cleanup_command</a>\u3001<a href=\"/docs/12/runtime-config-replication.html#GUC-PROMOTE-TRIGGER-FILE\">promote_trigger_file</a>\u3001<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-END-COMMAND\">recovery_end_command</a>\u548c<a href=\"/docs/12/runtime-config-replication.html#GUC-RECOVERY-MIN-APPLY-DELAY\">recovery_min_apply_delay</a>\u3002</p>", "text": "\u5141\u8bb8\u901a\u8fc7\u91cd\u65b0\u52a0\u8f7d\u914d\u7f6e\u66f4\u6539\u90e8\u5206\u6062\u590d\u53c2\u6570\uff08Peter Eisentraut\uff09\u00a7 \u8fd9\u4e9b\u53c2\u6570\u662farchive_cleanup_command\u3001promote_trigger_file\u3001recovery_end_command\u548crecovery_min_apply_delay\u3002", "title": "\u5141\u8bb8\u901a\u8fc7\u91cd\u65b0\u52a0\u8f7d\u914d\u7f6e\u66f4\u6539\u90e8\u5206\u6062\u590d\u53c2\u6570", "commits": ["13b89f96d"], "section": "\u6d41\u590d\u5236\u548c\u6062\u590d", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "2a83ae5bfcad1d15e2ccf9668bb66fcbbec3ab268131eae65759d5316a6fa1c0", "section_path": ["\u6d41\u590d\u5236\u548c\u6062\u590d"], "commit_groups": [["13b89f96d"]], "identity_text": "Allow some recovery parameters to be changed with reload (Peter Eisentraut) These parameters are guc-archive-cleanup-command , guc-promote-trigger-file , guc-recovery-end-command , and guc-recovery-min-apply-delay .", "commit_aliases": ["13b89f96d"], "source_commits": ["13b89f96d"], "source_entry_id": "12.0/changes/074", "db_id": "f0d2a9c31f9b66ea92cde646b41560c9", "patch_ids": ["764dced1bbe095afd84d849c1689c592"], "statement_hash": "5745e3c316fd4e3d043dd2f8e325a5f1eded27266a6109d0ec8ca729dd0e7dde", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-411b6f3530d97654", "migration": false}, {"id": "12.0-e6889333e94f5ba7", "cves": [], "html": "<p>\u5141\u8bb8\u6309\u8fde\u63a5\u8bbe\u7f6e\u6d41\u590d\u5236\u8d85\u65f6\uff08<a href=\"/docs/12/runtime-config-replication.html#GUC-WAL-SENDER-TIMEOUT\">wal_sender_timeout</a>\uff09\uff08Takayuki Tsunakawa\uff09<a href=\"https://postgr.es/c/db361db2f\">\u00a7</a></p>\n<p>\u4ee5\u524d\uff0c\u53ea\u80fd\u5728\u6574\u4e2a\u96c6\u7fa4\u8303\u56f4\u5185\u8bbe\u7f6e\u6b64\u53c2\u6570\u3002</p>", "text": "\u5141\u8bb8\u6309\u8fde\u63a5\u8bbe\u7f6e\u6d41\u590d\u5236\u8d85\u65f6\uff08wal_sender_timeout\uff09\uff08Takayuki Tsunakawa\uff09\u00a7 \u4ee5\u524d\uff0c\u53ea\u80fd\u5728\u6574\u4e2a\u96c6\u7fa4\u8303\u56f4\u5185\u8bbe\u7f6e\u6b64\u53c2\u6570\u3002", "title": "\u5141\u8bb8\u6309\u8fde\u63a5\u8bbe\u7f6e\u6d41\u590d\u5236\u8d85\u65f6\uff08wal_sender_timeout\uff09", "commits": ["db361db2f"], "section": "\u6d41\u590d\u5236\u548c\u6062\u590d", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "73cb891faa3b4d5e289f8562568a817789f5ff3e222f27adf52f575c8f9c1b22", "section_path": ["\u6d41\u590d\u5236\u548c\u6062\u590d"], "commit_groups": [["db361db2f"]], "identity_text": "Allow the streaming replication timeout ( guc-wal-sender-timeout ) to be set per connection (Takayuki Tsunakawa) Previously, this could only be set cluster-wide.", "commit_aliases": ["db361db2f"], "source_commits": ["db361db2f"], "source_entry_id": "12.0/changes/075", "db_id": "d190a24af1facfd3a0c46a34fd4b6e9b", "patch_ids": ["eb35f3577d2db8b66c2f8fe236a131ab"], "statement_hash": "85d78e74f4a4b1b9d4606bab9af4727c94f64a0a9eae0611cdc0ccc98143d5d2", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-e6889333e94f5ba7", "migration": false}, {"id": "12.0-240e45971c6999c2", "cves": [], "html": "<p>\u6dfb\u52a0\u51fd\u6570 <a href=\"/docs/12/functions-admin.html#FUNCTIONS-RECOVERY-CONTROL\" title=\"9.26.4.\u00a0\u6062\u590d\u63a7\u5236\u51fd\u6570\"><code>pg_promote()</code></a>\uff0c\u7528\u4e8e\u5c06\u5907\u5e93\u63d0\u5347\u4e3a\u4e3b\u5e93\uff08Laurenz Albe\uff0cMicha\u00ebl Paquier\uff09<a href=\"https://postgr.es/c/10074651e\">\u00a7</a> <a href=\"https://postgr.es/c/8f045e242\">\u00a7</a></p>\n<p>\u4ee5\u524d\uff0c\u53ea\u80fd\u4f7f\u7528<a href=\"/docs/12/app-pg-ctl.html\" title=\"pg_ctl\"><span><span>pg_ctl</span></span></a>\u6216\u521b\u5efa\u89e6\u53d1\u6587\u4ef6\u6765\u6267\u884c\u6b64\u64cd\u4f5c\u3002</p>", "text": "\u6dfb\u52a0\u51fd\u6570 pg_promote()\uff0c\u7528\u4e8e\u5c06\u5907\u5e93\u63d0\u5347\u4e3a\u4e3b\u5e93\uff08Laurenz Albe\uff0cMicha\u00ebl Paquier\uff09\u00a7 \u00a7 \u4ee5\u524d\uff0c\u53ea\u80fd\u4f7f\u7528pg_ctl\u6216\u521b\u5efa\u89e6\u53d1\u6587\u4ef6\u6765\u6267\u884c\u6b64\u64cd\u4f5c\u3002", "title": "\u6dfb\u52a0\u51fd\u6570 pg_promote()\uff0c\u7528\u4e8e\u5c06\u5907\u5e93\u63d0\u5347\u4e3a\u4e3b\u5e93", "commits": ["10074651e", "8f045e242"], "section": "\u6d41\u590d\u5236\u548c\u6062\u590d", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "7f9dec9b05492de7714b0c3e7829609eafd23f5266be1bb5646ae0240b403115", "section_path": ["\u6d41\u590d\u5236\u548c\u6062\u590d"], "commit_groups": [["10074651e"], ["8f045e242"]], "identity_text": "Add function pg_promote() to promote standbys to primaries (Laurenz Albe, Micha\u00ebl Paquier) Previously, this operation was only possible by using app-pg-ctl or creating a trigger file.", "commit_aliases": ["10074651e", "8f045e242"], "source_commits": ["10074651e", "8f045e242"], "source_entry_id": "12.0/changes/076", "db_id": "b8b8be7ae072899f68d955bcdac0179a", "patch_ids": ["08cbd0dbb1c3932643b16f9e63cee193", "e6f6b67b551bc833079ef9908c6aa944"], "statement_hash": "f196f8d9f0235d1494f7c1e77694dc9fecc55e1ba25aa09d069d6e462585e83b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-240e45971c6999c2", "migration": false}, {"id": "12.0-767219be4482cb43", "cves": [], "html": "<p>\u5141\u8bb8\u590d\u5236\u590d\u5236\u69fd\uff08Masahiko Sawada\uff09<a href=\"https://postgr.es/c/9f06d79ef\">\u00a7</a></p>\n<p>\u76f8\u5e94\u51fd\u6570\u4e3a <a href=\"/docs/12/functions-admin.html#FUNCTIONS-REPLICATION-TABLE\" title=\"\u8868\u00a09.88.\u00a0\u590d\u5236 SQL \u51fd\u6570\"><code>pg_copy_physical_replication_slot()</code></a> \u548c <code>pg_copy_logical_replication_slot()</code>\u3002</p>", "text": "\u5141\u8bb8\u590d\u5236\u590d\u5236\u69fd\uff08Masahiko Sawada\uff09\u00a7 \u76f8\u5e94\u51fd\u6570\u4e3a pg_copy_physical_replication_slot() \u548c pg_copy_logical_replication_slot()\u3002", "title": "\u5141\u8bb8\u590d\u5236\u590d\u5236\u69fd", "commits": ["9f06d79ef"], "section": "\u6d41\u590d\u5236\u548c\u6062\u590d", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "034b95e7d88de249a587c0752a8f6a7c8a0046d5b4867d46c6438d68b6b147f7", "section_path": ["\u6d41\u590d\u5236\u548c\u6062\u590d"], "commit_groups": [["9f06d79ef"]], "identity_text": "Allow replication slots to be copied (Masahiko Sawada) The functions for this are pg_copy_physical_replication_slot() and pg_copy_logical_replication_slot().", "commit_aliases": ["9f06d79ef"], "source_commits": ["9f06d79ef"], "source_entry_id": "12.0/changes/077", "db_id": "43f3b130c3c90e1b381fe871210be702", "patch_ids": ["92878d85de3bfd4e2a8ca04e98824f63"], "statement_hash": "ddaaa7ae5cc082014169ddd6779353655901d80cc04e3470f992be2d81765610", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-767219be4482cb43", "migration": false}, {"id": "12.0-b73710273a308837", "cves": [], "html": "<p>\u4e0d\u518d\u5c06<a href=\"/docs/12/runtime-config-replication.html#GUC-MAX-WAL-SENDERS\">max_wal_senders</a>\u8ba1\u5165<a href=\"/docs/12/runtime-config-connection.html#GUC-MAX-CONNECTIONS\">max_connections</a>\uff08Alexander Kukushkin\uff09<a href=\"https://postgr.es/c/ea92368cd\">\u00a7</a></p>", "text": "\u4e0d\u518d\u5c06max_wal_senders\u8ba1\u5165max_connections\uff08Alexander Kukushkin\uff09\u00a7", "title": "\u4e0d\u518d\u5c06max_wal_senders\u8ba1\u5165max_connections", "commits": ["ea92368cd"], "section": "\u6d41\u590d\u5236\u548c\u6062\u590d", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "bb84ecbf0ff7b79af61065c41f0c60acc8c49e822e604a1e4267582aed0673be", "section_path": ["\u6d41\u590d\u5236\u548c\u6062\u590d"], "commit_groups": [["ea92368cd"]], "identity_text": "Make guc-max-wal-senders not count as part of guc-max-connections (Alexander Kukushkin)", "commit_aliases": ["ea92368cd"], "source_commits": ["ea92368cd"], "source_entry_id": "12.0/changes/078", "db_id": "8a3c58a12fdfa0a97d3ee54218e243d2", "patch_ids": ["391d2e6c9c9246741baa88df509dc6a3"], "statement_hash": "1ea21739eef1aa772f6bda92d40c8effd9c9342b97ef2b40f31c3bac93bf1347", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-b73710273a308837", "migration": false}, {"id": "12.0-f33e599c42b4592f", "cves": [], "html": "<p>\u4e3a<a href=\"/docs/12/runtime-config-wal.html#GUC-RECOVERY-TARGET-TIMELINE\">recovery_target_timeline</a>\u6dfb\u52a0\u663e\u5f0f\u503c <code>current</code>\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/ff8530605\">\u00a7</a></p>", "text": "\u4e3arecovery_target_timeline\u6dfb\u52a0\u663e\u5f0f\u503c current\uff08Peter Eisentraut\uff09\u00a7", "title": "\u4e3arecovery_target_timeline\u6dfb\u52a0\u663e\u5f0f\u503c current", "commits": ["ff8530605"], "section": "\u6d41\u590d\u5236\u548c\u6062\u590d", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "399d2d8367c349392c9596176ae5b3b1ec29b6e1f1a45e3c17ab013aa408f1ee", "section_path": ["\u6d41\u590d\u5236\u548c\u6062\u590d"], "commit_groups": [["ff8530605"]], "identity_text": "Add an explicit value of current for guc-recovery-target-timeline (Peter Eisentraut)", "commit_aliases": ["ff8530605"], "source_commits": ["ff8530605"], "source_entry_id": "12.0/changes/079", "db_id": "d964a64a19bae1dd6e9af96f46d5665b", "patch_ids": ["f48535760b949e5d2a65884cda8aa0d2"], "statement_hash": "cfa45bdf337886838c77989011b825ecf502ebbd2f19a8451e0a80d60a469e86", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-f33e599c42b4592f", "migration": false}, {"id": "12.0-9731187641fa28d8", "cves": [], "html": "<p>\u5982\u679c<a href=\"/docs/12/sql-prepare-transaction.html\" title=\"PREPARE TRANSACTION\">\u4e24\u9636\u6bb5\u4e8b\u52a1</a>\u72b6\u6001\u6587\u4ef6\u635f\u574f\uff0c\u5219\u4f7f\u6062\u590d\u5931\u8d25\uff08Micha\u00ebl Paquier\uff09<a href=\"https://postgr.es/c/8582b4d04\">\u00a7</a></p>\n<p>\u4ee5\u524d\uff0c\u4f1a\u8bb0\u5f55\u4e00\u6761\u8b66\u544a\u5e76\u7ee7\u7eed\u6062\u590d\uff0c\u53ef\u80fd\u5bfc\u81f4\u8be5\u4e8b\u52a1\u4e22\u5931\u3002</p>", "text": "\u5982\u679c\u4e24\u9636\u6bb5\u4e8b\u52a1\u72b6\u6001\u6587\u4ef6\u635f\u574f\uff0c\u5219\u4f7f\u6062\u590d\u5931\u8d25\uff08Micha\u00ebl Paquier\uff09\u00a7 \u4ee5\u524d\uff0c\u4f1a\u8bb0\u5f55\u4e00\u6761\u8b66\u544a\u5e76\u7ee7\u7eed\u6062\u590d\uff0c\u53ef\u80fd\u5bfc\u81f4\u8be5\u4e8b\u52a1\u4e22\u5931\u3002", "title": "\u5982\u679c\u4e24\u9636\u6bb5\u4e8b\u52a1\u72b6\u6001\u6587\u4ef6\u635f\u574f\uff0c\u5219\u4f7f\u6062\u590d\u5931\u8d25", "commits": ["8582b4d04"], "section": "\u6d41\u590d\u5236\u548c\u6062\u590d", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.4", "source_hash": "a48c96e23009aacaa4968eae7a3c995d5ce138caa21d7c90b291fc8a197f8be1", "section_path": ["\u6d41\u590d\u5236\u548c\u6062\u590d"], "commit_groups": [["8582b4d04"]], "identity_text": "Make recovery fail if a two-phase transaction status file is corrupt (Micha\u00ebl Paquier) Previously, a warning was logged and recovery continued, allowing the transaction to be lost.", "commit_aliases": ["8582b4d04"], "source_commits": ["8582b4d04"], "source_entry_id": "12.0/changes/080", "db_id": "93c983372e45e7180e8bfbe83ed56ae0", "patch_ids": ["c9289fef90f130eda88fdbe1be027b16"], "statement_hash": "c2352ea8afe9fd0dab4c9353c201f4a81f3cfbc74e4fd3c56338125c52312206", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-9731187641fa28d8", "migration": false}, {"id": "12.0-784e12a2415d957b", "cves": [], "html": "<p>\u4e3a<a href=\"/docs/12/sql-reindex.html\" title=\"REINDEX\"><span>REINDEX</span></a>\u6dfb\u52a0 <code>CONCURRENTLY</code> \u9009\u9879\uff0c\u4ee5\u5141\u8bb8\u5728\u4e0d\u963b\u585e\u5199\u5165\u7684\u60c5\u51b5\u4e0b\u91cd\u5efa\u7d22\u5f15\uff08Micha\u00ebl Paquier\uff0cAndreas Karlsson\uff0cPeter Eisentraut\uff09<a href=\"https://postgr.es/c/5dc92b844\">\u00a7</a></p>\n<p>\u8fd9\u4e5f\u53ef\u4ee5\u901a\u8fc7<a href=\"/docs/12/app-reindexdb.html\" title=\"reindexdb\"><span><span>reindexdb</span></span></a>\u5e94\u7528\u7684 <code>--concurrently</code> \u9009\u9879\u63a7\u5236\u3002</p>", "text": "\u4e3aREINDEX\u6dfb\u52a0 CONCURRENTLY \u9009\u9879\uff0c\u4ee5\u5141\u8bb8\u5728\u4e0d\u963b\u585e\u5199\u5165\u7684\u60c5\u51b5\u4e0b\u91cd\u5efa\u7d22\u5f15\uff08Micha\u00ebl Paquier\uff0cAndreas Karlsson\uff0cPeter Eisentraut\uff09\u00a7 \u8fd9\u4e5f\u53ef\u4ee5\u901a\u8fc7reindexdb\u5e94\u7528\u7684 --concurrently \u9009\u9879\u63a7\u5236\u3002", "title": "\u4e3aREINDEX\u6dfb\u52a0 CONCURRENTLY \u9009\u9879\uff0c\u4ee5\u5141\u8bb8\u5728\u4e0d\u963b\u585e\u5199\u5165\u7684\u60c5\u51b5\u4e0b\u91cd\u5efa\u7d22\u5f15", "commits": ["5dc92b844"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "6ed59bb3cf1bd4b8545c45e2394acd96e6875efa50f6d688f04038fb37ab68e9", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["5dc92b844"]], "identity_text": "Add sql-reindex CONCURRENTLY option to allow reindexing without locking out writes (Micha\u00ebl Paquier, Andreas Karlsson, Peter Eisentraut) This is also controlled by the app-reindexdb application's --concurrently option.", "commit_aliases": ["5dc92b844"], "source_commits": ["5dc92b844"], "source_entry_id": "12.0/changes/081", "db_id": "97168a47138ede756653d93be8b161ea", "patch_ids": ["2c3964f4327298d9919d9a0ec6f933a0"], "statement_hash": "d6eb231d9adc736a381c5373a5da1b303ed889b4d147906a49cade2dc2f2df9c", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-784e12a2415d957b", "migration": false}, {"id": "12.0-5685d5ca00eed913", "cves": [], "html": "<p>\u6dfb\u52a0\u5bf9<a href=\"/docs/12/ddl-generated-columns.html\" title=\"5.3.\u00a0\u751f\u6210\u5217\">\u751f\u6210\u5217</a>\u7684\u652f\u6301\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/fc22b6623\">\u00a7</a></p>\n<p>\u751f\u6210\u5217\u7684\u5185\u5bb9\u7531\u8868\u8fbe\u5f0f\u8ba1\u7b97\u5f97\u51fa\uff08\u53ef\u4ee5\u5f15\u7528\u540c\u4e00\u8868\u4e2d\u7684\u5176\u4ed6\u5217\uff09\uff0c\u800c\u975e\u7531 <code>INSERT</code> \u6216 <code>UPDATE</code> \u547d\u4ee4\u6307\u5b9a\u3002</p>", "text": "\u6dfb\u52a0\u5bf9\u751f\u6210\u5217\u7684\u652f\u6301\uff08Peter Eisentraut\uff09\u00a7 \u751f\u6210\u5217\u7684\u5185\u5bb9\u7531\u8868\u8fbe\u5f0f\u8ba1\u7b97\u5f97\u51fa\uff08\u53ef\u4ee5\u5f15\u7528\u540c\u4e00\u8868\u4e2d\u7684\u5176\u4ed6\u5217\uff09\uff0c\u800c\u975e\u7531 INSERT \u6216 UPDATE \u547d\u4ee4\u6307\u5b9a\u3002", "title": "\u6dfb\u52a0\u5bf9\u751f\u6210\u5217\u7684\u652f\u6301", "commits": ["fc22b6623"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "b29e2d9651311913e69719d64ebe3ca26e0135b9d7e7da6c625b8a3915c9cd80", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["fc22b6623"]], "identity_text": "Add support for generated columns (Peter Eisentraut) The content of generated columns are computed from expressions (including references to other columns in the same table) rather than being specified by INSERT or UPDATE commands.", "commit_aliases": ["fc22b6623"], "source_commits": ["fc22b6623"], "source_entry_id": "12.0/changes/082", "db_id": "971ca537fa68c853221b2602a647a05a", "patch_ids": ["e82859c5bd79fcfd1a042c8a7eb47e10"], "statement_hash": "159041b428921603446e43fdc25751b10ff4e0bb9f0acab243b3561dcf15e876", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-5685d5ca00eed913", "migration": false}, {"id": "12.0-a4689c48c7760a91", "cves": [], "html": "<p>\u4e3a <a href=\"/docs/12/sql-copy.html\" title=\"COPY\"><code>COPY FROM</code></a> \u6dfb\u52a0 <code>WHERE</code> \u5b50\u53e5\uff0c\u4ee5\u63a7\u5236\u63a5\u53d7\u54ea\u4e9b\u884c\uff08Surafel Temesgen\uff09<a href=\"https://postgr.es/c/31f381740\">\u00a7</a></p>\n<p>\u8fd9\u63d0\u4f9b\u4e86\u8fc7\u6ee4\u4f20\u5165\u6570\u636e\u7684\u7b80\u5355\u65b9\u6cd5\u3002</p>", "text": "\u4e3a COPY FROM \u6dfb\u52a0 WHERE \u5b50\u53e5\uff0c\u4ee5\u63a7\u5236\u63a5\u53d7\u54ea\u4e9b\u884c\uff08Surafel Temesgen\uff09\u00a7 \u8fd9\u63d0\u4f9b\u4e86\u8fc7\u6ee4\u4f20\u5165\u6570\u636e\u7684\u7b80\u5355\u65b9\u6cd5\u3002", "title": "\u4e3a COPY FROM \u6dfb\u52a0 WHERE \u5b50\u53e5\uff0c\u4ee5\u63a7\u5236\u63a5\u53d7\u54ea\u4e9b\u884c", "commits": ["31f381740"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "d29f2dd00c7413ff097af7428c3d63722f2a2ed39760f1960b68eed9730d9108", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["31f381740"]], "identity_text": "Add a WHERE clause to COPY FROM to control which rows are accepted (Surafel Temesgen) This provides a simple way to filter incoming data.", "commit_aliases": ["31f381740"], "source_commits": ["31f381740"], "source_entry_id": "12.0/changes/083", "db_id": "e0089dbe8d8c093ef24f3e03d65acf4b", "patch_ids": ["c8f0dac4c78cde584336644c67237734"], "statement_hash": "7aaadbd4ed6a753d400f309d67b1e28fd1da426642da5f9480004b0bd785e1da", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-a4689c48c7760a91", "migration": false}, {"id": "12.0-52e4ddc055449f41", "cves": [], "html": "<p>\u5141\u8bb8\u66f4\u7075\u6d3b\u5730\u6dfb\u52a0\u679a\u4e3e\u503c\uff08Andrew Dunstan\uff0cTom Lane\uff0cThomas Munro\uff09<a href=\"https://postgr.es/c/212fab992\">\u00a7</a></p>\n<p>\u4ee5\u524d\uff0c\u4e0d\u80fd\u5728\u4e8b\u52a1\u5757\u4e2d\u8c03\u7528 <a href=\"/docs/12/sql-altertype.html\" title=\"ALTER TYPE\"><code>ALTER TYPE ... ADD VALUE</code></a>\uff0c\u9664\u975e\u5b83\u4e0e\u521b\u5efa\u8be5\u679a\u4e3e\u7c7b\u578b\u7684\u64cd\u4f5c\u5904\u4e8e\u540c\u4e00\u4e8b\u52a1\u3002\u73b0\u5728\u53ef\u4ee5\u5728\u540e\u7eed\u4e8b\u52a1\u4e2d\u8c03\u7528\uff0c\u53ea\u8981\u5728\u63d0\u4ea4\u4e4b\u540e\u624d\u5f15\u7528\u65b0\u7684\u679a\u4e3e\u503c\u5373\u53ef\u3002</p>", "text": "\u5141\u8bb8\u66f4\u7075\u6d3b\u5730\u6dfb\u52a0\u679a\u4e3e\u503c\uff08Andrew Dunstan\uff0cTom Lane\uff0cThomas Munro\uff09\u00a7 \u4ee5\u524d\uff0c\u4e0d\u80fd\u5728\u4e8b\u52a1\u5757\u4e2d\u8c03\u7528 ALTER TYPE ... ADD VALUE\uff0c\u9664\u975e\u5b83\u4e0e\u521b\u5efa\u8be5\u679a\u4e3e\u7c7b\u578b\u7684\u64cd\u4f5c\u5904\u4e8e\u540c\u4e00\u4e8b\u52a1\u3002\u73b0\u5728\u53ef\u4ee5\u5728\u540e\u7eed\u4e8b\u52a1\u4e2d\u8c03\u7528\uff0c\u53ea\u8981\u5728\u63d0\u4ea4\u4e4b\u540e\u624d\u5f15\u7528\u65b0\u7684\u679a\u4e3e\u503c\u5373\u53ef\u3002", "title": "\u5141\u8bb8\u66f4\u7075\u6d3b\u5730\u6dfb\u52a0\u679a\u4e3e\u503c", "commits": ["212fab992"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "21db521cba13b8d8b8283fbd50ff65039558b44f8018eb73076c41e7a538bcbf", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["212fab992"]], "identity_text": "Allow enumerated values to be added more flexibly (Andrew Dunstan, Tom Lane, Thomas Munro) Previously, ALTER TYPE ... ADD VALUE could not be called in a transaction block, unless it was part of the same transaction that created the enumerated type. Now it can be called in a later transaction, so long as the new enumerated value is not referenced until after it is committed.", "commit_aliases": ["212fab992"], "source_commits": ["212fab992"], "source_entry_id": "12.0/changes/084", "db_id": "2ee1384c618e549806524dd7b5a4f182", "patch_ids": ["0ee4819da54677f371325ce42f1a5e5a"], "statement_hash": "28d69c7eb3b460af932b8618bc1c9c6be57991e9c4e678e5ede36b4bf9a99bd0", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-52e4ddc055449f41", "migration": false}, {"id": "12.0-a4e2dbc3d880fbd6", "cves": [], "html": "<p>\u6dfb\u52a0\u7ed3\u675f\u5f53\u524d\u4e8b\u52a1\u5e76\u5f00\u59cb\u65b0\u4e8b\u52a1\u7684\u547d\u4ee4\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/280a408b4\">\u00a7</a></p>\n<p>\u8fd9\u4e9b\u547d\u4ee4\u4e3a <a href=\"/docs/12/sql-commit.html\" title=\"COMMIT\"><code>COMMIT AND CHAIN</code></a> \u548c <a href=\"/docs/12/sql-rollback.html\" title=\"ROLLBACK\"><code>ROLLBACK AND CHAIN</code></a>\u3002</p>", "text": "\u6dfb\u52a0\u7ed3\u675f\u5f53\u524d\u4e8b\u52a1\u5e76\u5f00\u59cb\u65b0\u4e8b\u52a1\u7684\u547d\u4ee4\uff08Peter Eisentraut\uff09\u00a7 \u8fd9\u4e9b\u547d\u4ee4\u4e3a COMMIT AND CHAIN \u548c ROLLBACK AND CHAIN\u3002", "title": "\u6dfb\u52a0\u7ed3\u675f\u5f53\u524d\u4e8b\u52a1\u5e76\u5f00\u59cb\u65b0\u4e8b\u52a1\u7684\u547d\u4ee4", "commits": ["280a408b4"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "8f55895cecb88d91b6c0b18934d0fe68851e9e9b0cbfa71cd8372fcd1e547f70", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["280a408b4"]], "identity_text": "Add commands to end a transaction and start a new one (Peter Eisentraut) The commands are COMMIT AND CHAIN and ROLLBACK AND CHAIN.", "commit_aliases": ["280a408b4"], "source_commits": ["280a408b4"], "source_entry_id": "12.0/changes/085", "db_id": "a14d1a56f35bb27bf2b01ce925ba5c7b", "patch_ids": ["0ade7c7cc2645cf9a8789fb91fe96700"], "statement_hash": "16cfa087a4d24ecc172e4bd60ad79c925124cc56a6cd24529d47819202b26a1e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-a4e2dbc3d880fbd6", "migration": false}, {"id": "12.0-16a9d353d1913ddc", "cves": [], "html": "<p>\u4e3a<a href=\"/docs/12/sql-vacuum.html\" title=\"VACUUM\"><span>VACUUM</span></a>\u548c <code>CREATE TABLE</code> \u6dfb\u52a0\u9009\u9879\uff0c\u4ee5\u963b\u6b62 <code>VACUUM</code> \u622a\u65ad\u5c3e\u90e8\u7a7a\u9875\u9762\uff08Takayuki Tsunakawa\uff09<a href=\"https://postgr.es/c/119dcfad9\">\u00a7</a> <a href=\"https://postgr.es/c/b84dbc8eb\">\u00a7</a></p>\n<p>\u8fd9\u4e9b\u9009\u9879\u662f <code>vacuum_truncate</code> \u548c <code>toast.vacuum_truncate</code>\u3002\u4f7f\u7528\u8fd9\u4e9b\u9009\u9879\u53ef\u964d\u4f4e <code>VACUUM</code> \u7684\u9501\u5b9a\u8981\u6c42\uff0c\u4f46\u4f1a\u4f7f\u5176\u65e0\u6cd5\u5c06\u78c1\u76d8\u7a7a\u95f4\u5f52\u8fd8\u7ed9\u64cd\u4f5c\u7cfb\u7edf\u3002</p>", "text": "\u4e3aVACUUM\u548c CREATE TABLE \u6dfb\u52a0\u9009\u9879\uff0c\u4ee5\u963b\u6b62 VACUUM \u622a\u65ad\u5c3e\u90e8\u7a7a\u9875\u9762\uff08Takayuki Tsunakawa\uff09\u00a7 \u00a7 \u8fd9\u4e9b\u9009\u9879\u662f vacuum_truncate \u548c toast.vacuum_truncate\u3002\u4f7f\u7528\u8fd9\u4e9b\u9009\u9879\u53ef\u964d\u4f4e VACUUM \u7684\u9501\u5b9a\u8981\u6c42\uff0c\u4f46\u4f1a\u4f7f\u5176\u65e0\u6cd5\u5c06\u78c1\u76d8\u7a7a\u95f4\u5f52\u8fd8\u7ed9\u64cd\u4f5c\u7cfb\u7edf\u3002", "title": "\u4e3aVACUUM\u548c CREATE TABLE \u6dfb\u52a0\u9009\u9879\uff0c\u4ee5\u963b\u6b62 VACUUM \u622a\u65ad\u5c3e\u90e8\u7a7a\u9875\u9762", "commits": ["119dcfad9", "b84dbc8eb"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "143cf3dc4e998e758dabde26fe7fb1012080e0ad17beac13ca5886b55fe74e00", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["119dcfad9"], ["b84dbc8eb"]], "identity_text": "Add sql-vacuum and CREATE TABLE options to prevent VACUUM from truncating trailing empty pages (Takayuki Tsunakawa) These options are vacuum_truncate and toast.vacuum_truncate. Use of these options reduces VACUUM's locking requirements, but prevents returning disk space to the operating system.", "commit_aliases": ["119dcfad9", "b84dbc8eb"], "source_commits": ["119dcfad9", "b84dbc8eb"], "source_entry_id": "12.0/changes/086", "db_id": "61cd4409eeeca7af348982e5a567bf1f", "patch_ids": ["6a6f2b32196321fe18b479d0f5bcb046", "8155682522d931432135ba58049cc58e"], "statement_hash": "a9bf550bdeb6f6cc1070bbeea83a239070a13a1036932c83aaa7f7c317727232", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-16a9d353d1913ddc", "migration": false}, {"id": "12.0-b3b61fef9eb963ab", "cves": [], "html": "<p>\u5141\u8bb8 <code>VACUUM</code> \u8df3\u8fc7\u7d22\u5f15\u6e05\u7406\uff08Masahiko Sawada\uff09<a href=\"https://postgr.es/c/a96c41fee\">\u00a7</a> <a href=\"https://postgr.es/c/ce59b75d4\">\u00a7</a></p>\n<p>\u6b64\u66f4\u6539\u6dfb\u52a0\u4e86 <code>VACUUM</code> \u547d\u4ee4\u9009\u9879 <code>INDEX_CLEANUP</code>\uff0c\u4ee5\u53ca\u8868\u5b58\u50a8\u9009\u9879 <code>vacuum_index_cleanup</code>\u3002\u4f7f\u7528\u6b64\u9009\u9879\u4f1a\u964d\u4f4e\u7a7a\u95f4\u56de\u6536\u80fd\u529b\uff0c\u5e76\u53ef\u80fd\u5bfc\u81f4\u7d22\u5f15\u81a8\u80c0\uff0c\u4f46\u5728\u4e3b\u8981\u76ee\u6807\u662f\u51bb\u7ed3\u65e7\u5143\u7ec4\u65f6\u5f88\u6709\u5e2e\u52a9\u3002</p>", "text": "\u5141\u8bb8 VACUUM \u8df3\u8fc7\u7d22\u5f15\u6e05\u7406\uff08Masahiko Sawada\uff09\u00a7 \u00a7 \u6b64\u66f4\u6539\u6dfb\u52a0\u4e86 VACUUM \u547d\u4ee4\u9009\u9879 INDEX_CLEANUP\uff0c\u4ee5\u53ca\u8868\u5b58\u50a8\u9009\u9879 vacuum_index_cleanup\u3002\u4f7f\u7528\u6b64\u9009\u9879\u4f1a\u964d\u4f4e\u7a7a\u95f4\u56de\u6536\u80fd\u529b\uff0c\u5e76\u53ef\u80fd\u5bfc\u81f4\u7d22\u5f15\u81a8\u80c0\uff0c\u4f46\u5728\u4e3b\u8981\u76ee\u6807\u662f\u51bb\u7ed3\u65e7\u5143\u7ec4\u65f6\u5f88\u6709\u5e2e\u52a9\u3002", "title": "\u5141\u8bb8 VACUUM \u8df3\u8fc7\u7d22\u5f15\u6e05\u7406", "commits": ["a96c41fee", "ce59b75d4"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "0f145c5e9dd8b4417711b4492cbb467c3de909783e566cfc2c8d9c1061aeecd4", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["a96c41fee"], ["ce59b75d4"]], "identity_text": "Allow VACUUM to skip index cleanup (Masahiko Sawada) This change adds a VACUUM command option INDEX_CLEANUP as well as a table storage option vacuum_index_cleanup. Use of this option reduces the ability to reclaim space and can lead to index bloat, but it is helpful when the main goal is to freeze old tuples.", "commit_aliases": ["a96c41fee", "ce59b75d4"], "source_commits": ["a96c41fee", "ce59b75d4"], "source_entry_id": "12.0/changes/087", "db_id": "417b9685418f295cf1432c95541c791a", "patch_ids": ["0b47a0e9b698cc1e70f50117c84e76c7", "d606d7e6d766ba8f76fe2c0db198f753"], "statement_hash": "91f1ba5e64b41cc96573add4f2f437b6c815f662947d9ddd2239e4cf6faf5462", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-b3b61fef9eb963ab", "migration": false}, {"id": "12.0-6d3b88884ea80785", "cves": [], "html": "<p>\u6dfb\u52a0\u8df3\u8fc7\u65e0\u6cd5\u7acb\u5373\u9501\u5b9a\u7684\u8868\u4e0a\u7684 <code>VACUUM</code> \u548c <code>ANALYZE</code> \u64cd\u4f5c\u7684\u529f\u80fd\uff08Nathan Bossart\uff09<a href=\"https://postgr.es/c/803b1301e\">\u00a7</a></p>\n<p>\u6b64\u9009\u9879\u540d\u4e3a <code>SKIP_LOCKED</code>\u3002</p>", "text": "\u6dfb\u52a0\u8df3\u8fc7\u65e0\u6cd5\u7acb\u5373\u9501\u5b9a\u7684\u8868\u4e0a\u7684 VACUUM \u548c ANALYZE \u64cd\u4f5c\u7684\u529f\u80fd\uff08Nathan Bossart\uff09\u00a7 \u6b64\u9009\u9879\u540d\u4e3a SKIP_LOCKED\u3002", "title": "\u6dfb\u52a0\u8df3\u8fc7\u65e0\u6cd5\u7acb\u5373\u9501\u5b9a\u7684\u8868\u4e0a\u7684 VACUUM \u548c ANALYZE \u64cd\u4f5c\u7684\u529f\u80fd", "commits": ["803b1301e"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "3a82679f76f36d12f73477d4a31918b0137729172583d5b688327e47593494c9", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["803b1301e"]], "identity_text": "Add the ability to skip VACUUM and ANALYZE operations on tables that cannot be locked immediately (Nathan Bossart) This option is called SKIP_LOCKED.", "commit_aliases": ["803b1301e"], "source_commits": ["803b1301e"], "source_entry_id": "12.0/changes/088", "db_id": "5892f7709fa647114b11b37b119cd3bb", "patch_ids": ["0b7291cf513a62449ef3411f7a64e1e4"], "statement_hash": "d17ae89e85f3b8ef1357842fc2c85c8d9e25f09e9ac254cc2eab9c2a0974b58e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-6d3b88884ea80785", "migration": false}, {"id": "12.0-968809f59b50a401", "cves": [], "html": "<p>\u5141\u8bb8\u4e3a <code>VACUUM</code> \u548c <code>ANALYZE</code> \u7684\u9009\u9879\u6307\u5b9a\u53ef\u9009\u7684\u5e03\u5c14\u53c2\u6570\uff08Masahiko Sawada\uff09<a href=\"https://postgr.es/c/41b54ba78\">\u00a7</a></p>", "text": "\u5141\u8bb8\u4e3a VACUUM \u548c ANALYZE \u7684\u9009\u9879\u6307\u5b9a\u53ef\u9009\u7684\u5e03\u5c14\u53c2\u6570\uff08Masahiko Sawada\uff09\u00a7", "title": "\u5141\u8bb8\u4e3a VACUUM \u548c ANALYZE \u7684\u9009\u9879\u6307\u5b9a\u53ef\u9009\u7684\u5e03\u5c14\u53c2\u6570", "commits": ["41b54ba78"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "7cefaff861cf969b6681455313a1df8c7289abd9fab76294aea1f96b6c00cb19", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["41b54ba78"]], "identity_text": "Allow VACUUM and ANALYZE to take optional Boolean argument specifications (Masahiko Sawada)", "commit_aliases": ["41b54ba78"], "source_commits": ["41b54ba78"], "source_entry_id": "12.0/changes/089", "db_id": "87d13abad9624eef466679a3aa64df96", "patch_ids": ["9c9564d61c14a6d10430acbeb6815568"], "statement_hash": "9fa5caa402b284821873563842b08bcd1731bc6792d8a0a43e49fcee7056728b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-968809f59b50a401", "migration": false}, {"id": "12.0-541043e35d82519b", "cves": [], "html": "<p>\u9632\u6b62<a href=\"/docs/12/sql-truncate.html\" title=\"TRUNCATE\"><span>TRUNCATE</span></a>\u3001<code>VACUUM</code> \u548c <code>ANALYZE</code> \u5bf9\u7528\u6237\u6ca1\u6709\u6743\u9650\u7684\u8868\u8bf7\u6c42\u9501\uff08Micha\u00ebl Paquier\uff09<a href=\"https://postgr.es/c/f841ceb26\">\u00a7</a> <a href=\"https://postgr.es/c/a556549d7\">\u00a7</a></p>\n<p>\u8fd9\u53ef\u9632\u6b62\u672a\u7ecf\u6388\u6743\u7684\u9501\u5b9a\u5e72\u6270\u7528\u6237\u67e5\u8be2\u3002</p>", "text": "\u9632\u6b62TRUNCATE\u3001VACUUM \u548c ANALYZE \u5bf9\u7528\u6237\u6ca1\u6709\u6743\u9650\u7684\u8868\u8bf7\u6c42\u9501\uff08Micha\u00ebl Paquier\uff09\u00a7 \u00a7 \u8fd9\u53ef\u9632\u6b62\u672a\u7ecf\u6388\u6743\u7684\u9501\u5b9a\u5e72\u6270\u7528\u6237\u67e5\u8be2\u3002", "title": "\u9632\u6b62TRUNCATE\u3001VACUUM \u548c ANALYZE \u5bf9\u7528\u6237\u6ca1\u6709\u6743\u9650\u7684\u8868\u8bf7\u6c42\u9501", "commits": ["a556549d7", "f841ceb26"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "b9bc8a580f6847679c361f2774a3deed6301a4eee3ec3fd13ff8278027cd2ee3", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["a556549d7"], ["f841ceb26"]], "identity_text": "Prevent sql-truncate , VACUUM and ANALYZE from requesting a lock on tables for which the user lacks permission (Micha\u00ebl Paquier) This prevents unauthorized locking, which could interfere with user queries.", "commit_aliases": ["a556549d7", "f841ceb26"], "source_commits": ["a556549d7", "f841ceb26"], "source_entry_id": "12.0/changes/090", "db_id": "d54090a6696d40bd87dca7b3990ce11c", "patch_ids": ["6076dce12615d960dc7eee02c48e2acb", "6d5f6b24295794782cd835508d31a426"], "statement_hash": "a62cbf388f97cf388b5843e28b1d3b4d4ea49dd39f3c381786a18a173247e92a", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-541043e35d82519b", "migration": false}, {"id": "12.0-387c047159bfc04d", "cves": [], "html": "<p>\u4e3a<a href=\"/docs/12/sql-explain.html\" title=\"EXPLAIN\"><span>EXPLAIN</span></a>\u6dfb\u52a0 <code>SETTINGS</code> \u9009\u9879\uff0c\u4ee5\u8f93\u51fa\u975e\u9ed8\u8ba4\u7684\u4f18\u5316\u5668\u8bbe\u7f6e\uff08Tomas Vondra\uff09<a href=\"https://postgr.es/c/ea569d64a\">\u00a7</a></p>\n<p>\u4f7f\u7528<a href=\"/docs/12/auto-explain.html\" title=\"F.4.\u00a0auto_explain\">auto_explain</a>\u65f6\uff0c\u4e5f\u53ef\u901a\u8fc7\u8bbe\u7f6e <code>auto_explain.log_settings</code> \u83b7\u53d6\u8fd9\u4e9b\u8f93\u51fa\u3002</p>", "text": "\u4e3aEXPLAIN\u6dfb\u52a0 SETTINGS \u9009\u9879\uff0c\u4ee5\u8f93\u51fa\u975e\u9ed8\u8ba4\u7684\u4f18\u5316\u5668\u8bbe\u7f6e\uff08Tomas Vondra\uff09\u00a7 \u4f7f\u7528auto_explain\u65f6\uff0c\u4e5f\u53ef\u901a\u8fc7\u8bbe\u7f6e auto_explain.log_settings \u83b7\u53d6\u8fd9\u4e9b\u8f93\u51fa\u3002", "title": "\u4e3aEXPLAIN\u6dfb\u52a0 SETTINGS \u9009\u9879\uff0c\u4ee5\u8f93\u51fa\u975e\u9ed8\u8ba4\u7684\u4f18\u5316\u5668\u8bbe\u7f6e", "commits": ["ea569d64a"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "1e8e1aed689d80fac047cd7c8fb4dece2e426a6b36c096a64d7041676a1704a6", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["ea569d64a"]], "identity_text": "Add sql-explain option SETTINGS to output non-default optimizer settings (Tomas Vondra) This output can also be obtained when using auto-explain by setting auto_explain.log_settings.", "commit_aliases": ["ea569d64a"], "source_commits": ["ea569d64a"], "source_entry_id": "12.0/changes/091", "db_id": "7feb863bb9a0613cc56c913b21e2415e", "patch_ids": ["4dbd6a7fb3c02da3576376a2152101a3"], "statement_hash": "391ad07e182123bd9f313dc610184988e18029a019f0df48fbf0241303a04ef4", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-387c047159bfc04d", "migration": false}, {"id": "12.0-9b2e7121ea3de49d", "cves": [], "html": "<p>\u4e3a<a href=\"/docs/12/sql-createaggregate.html\" title=\"CREATE AGGREGATE\"><span>CREATE AGGREGATE</span></a>\u6dfb\u52a0 <code>OR REPLACE</code> \u9009\u9879\uff08Andrew Gierth\uff09<a href=\"https://postgr.es/c/01bde4fa4\">\u00a7</a></p>", "text": "\u4e3aCREATE AGGREGATE\u6dfb\u52a0 OR REPLACE \u9009\u9879\uff08Andrew Gierth\uff09\u00a7", "title": "\u4e3aCREATE AGGREGATE\u6dfb\u52a0 OR REPLACE \u9009\u9879", "commits": ["01bde4fa4"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "5a2330172f1318dec18a01e910413f0082ffd74a00844115c8e027bf5512d9b0", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["01bde4fa4"]], "identity_text": "Add OR REPLACE option to sql-createaggregate (Andrew Gierth)", "commit_aliases": ["01bde4fa4"], "source_commits": ["01bde4fa4"], "source_entry_id": "12.0/changes/092", "db_id": "258b3c97a0fb7129c23e0683c0b310f1", "patch_ids": ["2aa93a2b01ba52c6d2b51d2e9e328fb1"], "statement_hash": "979cb97ac49d6d9ea8b4d1da776a921f1c1e28f804aaa2735aebc168e64c5f16", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-9b2e7121ea3de49d", "migration": false}, {"id": "12.0-ccca294d2a438891", "cves": [], "html": "<p>\u5141\u8bb8\u4f7f\u7528<a href=\"/docs/12/sql-altertable.html\" title=\"ALTER TABLE\"><span>ALTER TABLE</span></a>\u4fee\u6539\u7cfb\u7edf\u76ee\u5f55\u7684\u9009\u9879\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/590a87025\">\u00a7</a></p>\n<p>\u73b0\u5728\u652f\u6301\u4fee\u6539\u76ee\u5f55\u7684 <code>reloptions</code> \u548c\u81ea\u52a8\u6e05\u7406\u8bbe\u7f6e\u3002\uff08\u4ecd\u7136\u9700\u8981\u8bbe\u7f6e<a href=\"/docs/12/runtime-config-developer.html#GUC-ALLOW-SYSTEM-TABLE-MODS\">allow_system_table_mods</a>\u3002\uff09</p>", "text": "\u5141\u8bb8\u4f7f\u7528ALTER TABLE\u4fee\u6539\u7cfb\u7edf\u76ee\u5f55\u7684\u9009\u9879\uff08Peter Eisentraut\uff09\u00a7 \u73b0\u5728\u652f\u6301\u4fee\u6539\u76ee\u5f55\u7684 reloptions \u548c\u81ea\u52a8\u6e05\u7406\u8bbe\u7f6e\u3002\uff08\u4ecd\u7136\u9700\u8981\u8bbe\u7f6eallow_system_table_mods\u3002\uff09", "title": "\u5141\u8bb8\u4f7f\u7528ALTER TABLE\u4fee\u6539\u7cfb\u7edf\u76ee\u5f55\u7684\u9009\u9879", "commits": ["590a87025"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "483d7311c17abe10e4ff2a45ee3948845eddaea7660d15bad8a1827210664fbd", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["590a87025"]], "identity_text": "Allow modifications of system catalogs' options using sql-altertable (Peter Eisentraut) Modifications of catalogs' reloptions and autovacuum settings are now supported. (Setting guc-allow-system-table-mods is still required.)", "commit_aliases": ["590a87025"], "source_commits": ["590a87025"], "source_entry_id": "12.0/changes/093", "db_id": "fd48d31ac0ebfc7bb9b1f15f4fbf1de7", "patch_ids": ["9e994931b0e3403dacb7a5964faf7938"], "statement_hash": "abc0d25d4d39e2cff2d1ac1061462ab6bfa7406104223647aa2074445c8f85ee", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-ccca294d2a438891", "migration": false}, {"id": "12.0-3c8c98d7136d6a71", "cves": [], "html": "<p>\u4e3a\u5916\u952e\u9009\u62e9\u9ed8\u8ba4\u7ea6\u675f\u540d\u65f6\uff0c\u4f7f\u7528\u6240\u6709\u952e\u5217\u7684\u540d\u79f0\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/f177660ab\">\u00a7</a></p>\n<p>\u4ee5\u524d\uff0c\u7ea6\u675f\u540d\u4e2d\u53ea\u5305\u542b\u7b2c\u4e00\u4e2a\u5217\u540d\uff0c\u5bfc\u81f4\u591a\u5217\u5916\u952e\u5b58\u5728\u6b67\u4e49\u3002</p>", "text": "\u4e3a\u5916\u952e\u9009\u62e9\u9ed8\u8ba4\u7ea6\u675f\u540d\u65f6\uff0c\u4f7f\u7528\u6240\u6709\u952e\u5217\u7684\u540d\u79f0\uff08Peter Eisentraut\uff09\u00a7 \u4ee5\u524d\uff0c\u7ea6\u675f\u540d\u4e2d\u53ea\u5305\u542b\u7b2c\u4e00\u4e2a\u5217\u540d\uff0c\u5bfc\u81f4\u591a\u5217\u5916\u952e\u5b58\u5728\u6b67\u4e49\u3002", "title": "\u4e3a\u5916\u952e\u9009\u62e9\u9ed8\u8ba4\u7ea6\u675f\u540d\u65f6\uff0c\u4f7f\u7528\u6240\u6709\u952e\u5217\u7684\u540d\u79f0", "commits": ["f177660ab"], "section": "\u5de5\u5177\u547d\u4ee4", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.5", "source_hash": "87c8b8f18426c49f52f875e3bf6605c391d6144d5383531c0ff69c1ce8040beb", "section_path": ["\u5de5\u5177\u547d\u4ee4"], "commit_groups": [["f177660ab"]], "identity_text": "Use all key columns' names when selecting default constraint names for foreign keys (Peter Eisentraut) Previously, only the first column name was included in the constraint name, resulting in ambiguity for multi-column foreign keys.", "commit_aliases": ["f177660ab"], "source_commits": ["f177660ab"], "source_entry_id": "12.0/changes/094", "db_id": "455226498f3c142a45e920cfdf26e714", "patch_ids": ["2d7b7e41fd4f7a93160b2ba646e90f3b"], "statement_hash": "a7c1e5fe43b1fdbfc6a9463df4ef7029e84bcc4627d7d3a1b4cebbfd47bdf5fc", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-3c8c98d7136d6a71", "migration": false}, {"id": "12.0-cb0ad7e2ae64c744", "cves": [], "html": "<p>\u66f4\u65b0\u5404\u9879 Unicode \u76f8\u5173\u4fe1\u606f\uff0c\u4f7f\u5176\u4e0e Unicode 12.1.0 \u4e00\u81f4\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/d8594d123\">\u00a7</a> <a href=\"https://postgr.es/c/82be666ee\">\u00a7</a></p>\n<p>\u4f8b\u5982\uff0c\u8fd9\u4fee\u590d\u4e86 <span>psql</span> \u5bf9\u5305\u542b\u7ec4\u5408\u5b57\u7b26\u7684\u8f93\u51fa\u8fdb\u884c\u9519\u8bef\u6392\u7248\u7684\u60c5\u51b5\u3002</p>", "text": "\u66f4\u65b0\u5404\u9879 Unicode \u76f8\u5173\u4fe1\u606f\uff0c\u4f7f\u5176\u4e0e Unicode 12.1.0 \u4e00\u81f4\uff08Peter Eisentraut\uff09\u00a7 \u00a7 \u4f8b\u5982\uff0c\u8fd9\u4fee\u590d\u4e86 psql \u5bf9\u5305\u542b\u7ec4\u5408\u5b57\u7b26\u7684\u8f93\u51fa\u8fdb\u884c\u9519\u8bef\u6392\u7248\u7684\u60c5\u51b5\u3002", "title": "\u66f4\u65b0\u5404\u9879 Unicode \u76f8\u5173\u4fe1\u606f\uff0c\u4f7f\u5176\u4e0e Unicode 12.1.0 \u4e00\u81f4", "commits": ["82be666ee", "d8594d123"], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.6", "source_hash": "bf0728823c4998a1356a8e04f1524aa468a2a83f8f4ad6219c825d9e336b6253", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["82be666ee"], ["d8594d123"]], "identity_text": "Update assorted knowledge about Unicode to match Unicode 12.1.0 (Peter Eisentraut) This fixes, for example, cases where psql would misformat output involving combining characters.", "commit_aliases": ["82be666ee", "d8594d123"], "source_commits": ["82be666ee", "d8594d123"], "source_entry_id": "12.0/changes/095", "db_id": "75385fd3f66a492adb099e414ac96aff", "patch_ids": ["14e2d2cacd913383bdb43221f070c3c0", "a76c027afa5456955d3b668c961ee892"], "statement_hash": "778adc2505ad96f890d458cbb14d0e573c981e85c0a42808f5a9d37658571650", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-cb0ad7e2ae64c744", "migration": false}, {"id": "12.0-275a77789f3c2226", "cves": [], "html": "<p>\u66f4\u65b0 Snowball \u8bcd\u5e72\u63d0\u53d6\u8bcd\u5178\uff0c\u652f\u6301\u65b0\u7684\u8bed\u8a00\uff08Arthur Zakirov\uff09<a href=\"https://postgr.es/c/fd582317e\">\u00a7</a></p>\n<p>\u8fd9\u4e3a<a href=\"/docs/12/textsearch.html\" title=\"\u7b2c\u00a012\u00a0\u7ae0\u00a0\u5168\u6587\u68c0\u7d22\">\u5168\u6587\u68c0\u7d22</a>\u6dfb\u52a0\u4e86\u963f\u62c9\u4f2f\u8bed\u3001\u5370\u5ea6\u5c3c\u897f\u4e9a\u8bed\u3001\u7231\u5c14\u5170\u8bed\u3001\u7acb\u9676\u5b9b\u8bed\u3001\u5c3c\u6cca\u5c14\u8bed\u548c\u6cf0\u7c73\u5c14\u8bed\u7684\u8bcd\u5e72\u63d0\u53d6\u652f\u6301\u3002</p>", "text": "\u66f4\u65b0 Snowball \u8bcd\u5e72\u63d0\u53d6\u8bcd\u5178\uff0c\u652f\u6301\u65b0\u7684\u8bed\u8a00\uff08Arthur Zakirov\uff09\u00a7 \u8fd9\u4e3a\u5168\u6587\u68c0\u7d22\u6dfb\u52a0\u4e86\u963f\u62c9\u4f2f\u8bed\u3001\u5370\u5ea6\u5c3c\u897f\u4e9a\u8bed\u3001\u7231\u5c14\u5170\u8bed\u3001\u7acb\u9676\u5b9b\u8bed\u3001\u5c3c\u6cca\u5c14\u8bed\u548c\u6cf0\u7c73\u5c14\u8bed\u7684\u8bcd\u5e72\u63d0\u53d6\u652f\u6301\u3002", "title": "\u66f4\u65b0 Snowball \u8bcd\u5e72\u63d0\u53d6\u8bcd\u5178\uff0c\u652f\u6301\u65b0\u7684\u8bed\u8a00", "commits": ["fd582317e"], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.6", "source_hash": "80b8947f63515196d95b31837ff0d0df8e90bb7ccd68eacad1fdcdfc171a4b15", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["fd582317e"]], "identity_text": "Update Snowball stemmer dictionaries with support for new languages (Arthur Zakirov) This adds word stemming support for Arabic, Indonesian, Irish, Lithuanian, Nepali, and Tamil to full text search.", "commit_aliases": ["fd582317e"], "source_commits": ["fd582317e"], "source_entry_id": "12.0/changes/096", "db_id": "1468267bbc264355315798de82bfede5", "patch_ids": ["39aab1e89e135f1dd0db661636a9af03"], "statement_hash": "b379d85da4d8afd4043012550d2ce808da8789cacc58bc67a0608cfca625b75e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-275a77789f3c2226", "migration": false}, {"id": "12.0-52611d448b631320", "cves": [], "html": "<p>\u5141\u8bb8\u521b\u5efa\u5c06\u6309\u4f4d\u4e0d\u540c\u7684\u5b57\u7b26\u4e32\u5224\u5b9a\u4e3a\u76f8\u7b49\u7684<a href=\"/docs/12/collation.html\" title=\"23.2.\u00a0\u6392\u5e8f\u89c4\u5219\u652f\u6301\">\u6392\u5e8f\u89c4\u5219</a>\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/5e1963fb7\">\u00a7</a></p>\n<p>\u6b64\u529f\u80fd\u652f\u6301<span>\u201c<span>\u975e\u786e\u5b9a\u6027</span>\u201d</span>\u6392\u5e8f\u89c4\u5219\uff0c\u53ef\u4ee5\u5b9a\u4e49\u4e0d\u533a\u5206\u5927\u5c0f\u5199\u548c\u91cd\u97f3\u7684\u76f8\u7b49\u6bd4\u8f83\u3002\u56e0\u6b64\uff0c\u4f8b\u5982\u5728\u6587\u672c\u5217\u4e0a\u521b\u5efa\u4e0d\u533a\u5206\u5927\u5c0f\u5199\u7684\u552f\u4e00\u7ea6\u675f\uff0c\u4f1a\u6bd4\u4ee5\u524d\u66f4\u5bb9\u6613\u3002\u53ea\u6709 <acronym>ICU</acronym> \u6392\u5e8f\u89c4\u5219\u652f\u6301\u6b64\u529f\u80fd\u3002</p>", "text": "\u5141\u8bb8\u521b\u5efa\u5c06\u6309\u4f4d\u4e0d\u540c\u7684\u5b57\u7b26\u4e32\u5224\u5b9a\u4e3a\u76f8\u7b49\u7684\u6392\u5e8f\u89c4\u5219\uff08Peter Eisentraut\uff09\u00a7 \u6b64\u529f\u80fd\u652f\u6301\u201c\u975e\u786e\u5b9a\u6027\u201d\u6392\u5e8f\u89c4\u5219\uff0c\u53ef\u4ee5\u5b9a\u4e49\u4e0d\u533a\u5206\u5927\u5c0f\u5199\u548c\u91cd\u97f3\u7684\u76f8\u7b49\u6bd4\u8f83\u3002\u56e0\u6b64\uff0c\u4f8b\u5982\u5728\u6587\u672c\u5217\u4e0a\u521b\u5efa\u4e0d\u533a\u5206\u5927\u5c0f\u5199\u7684\u552f\u4e00\u7ea6\u675f\uff0c\u4f1a\u6bd4\u4ee5\u524d\u66f4\u5bb9\u6613\u3002\u53ea\u6709 ICU \u6392\u5e8f\u89c4\u5219\u652f\u6301\u6b64\u529f\u80fd\u3002", "title": "\u5141\u8bb8\u521b\u5efa\u5c06\u6309\u4f4d\u4e0d\u540c\u7684\u5b57\u7b26\u4e32\u5224\u5b9a\u4e3a\u76f8\u7b49\u7684\u6392\u5e8f\u89c4\u5219", "commits": ["5e1963fb7"], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.6", "source_hash": "c0db9e165ad6a3de3d102c2df46c218dd8b368048bc9086a93f3248701097fb8", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["5e1963fb7"]], "identity_text": "Allow creation of collations that report string equality for strings that are not bit-wise equal (Peter Eisentraut) This feature supports nondeterministic collations that can define case- and accent-agnostic equality comparisons. Thus, for example, a case-insensitive uniqueness constraint on a text column can be made more easily than before. This is only supported for ICU collations.", "commit_aliases": ["5e1963fb7"], "source_commits": ["5e1963fb7"], "source_entry_id": "12.0/changes/097", "db_id": "ffc096970f4aac502ede72041cfc219d", "patch_ids": ["a4452a4f816af07d5e51f9cd35212585"], "statement_hash": "78bd5aa9366b983f6bf8ab6d9b9ea3c174492429a92de46fd2401086c1e22311", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-52611d448b631320", "migration": false}, {"id": "12.0-12e182f6c53e9824", "cves": [], "html": "<p>\u6dfb\u52a0\u5bf9\u65e7\u7248 ICU \u4e2d <acronym>ICU</acronym> \u6392\u5e8f\u89c4\u5219\u5c5e\u6027\u7684\u652f\u6301\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/b8f9a2a69\">\u00a7</a></p>\n<p>\u8fd9\u4f7f\u6240\u6709 ICU \u7248\u672c\u90fd\u80fd\u4ee5\u4e00\u81f4\u7684\u65b9\u5f0f\u81ea\u5b9a\u4e49\u6392\u5e8f\u89c4\u5219\u3002</p>", "text": "\u6dfb\u52a0\u5bf9\u65e7\u7248 ICU \u4e2d ICU \u6392\u5e8f\u89c4\u5219\u5c5e\u6027\u7684\u652f\u6301\uff08Peter Eisentraut\uff09\u00a7 \u8fd9\u4f7f\u6240\u6709 ICU \u7248\u672c\u90fd\u80fd\u4ee5\u4e00\u81f4\u7684\u65b9\u5f0f\u81ea\u5b9a\u4e49\u6392\u5e8f\u89c4\u5219\u3002", "title": "\u6dfb\u52a0\u5bf9\u65e7\u7248 ICU \u4e2d ICU \u6392\u5e8f\u89c4\u5219\u5c5e\u6027\u7684\u652f\u6301", "commits": ["b8f9a2a69"], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.6", "source_hash": "e10b640dbc72a21cc8f7b48543e7086579ec65ff5aa7e4168597af64b1ae74a9", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["b8f9a2a69"]], "identity_text": "Add support for ICU collation attributes on older ICU versions (Peter Eisentraut) This allows customization of the collation rules in a consistent way across all ICU versions.", "commit_aliases": ["b8f9a2a69"], "source_commits": ["b8f9a2a69"], "source_entry_id": "12.0/changes/098", "db_id": "4609e86c161b9930ef87b8ee91eb3b3b", "patch_ids": ["dd33d7428800ee318f06d13e16182b26"], "statement_hash": "67ff093a86bfb708630767fc8eeab7ffc7ecc1af6350d3410ed51d3ddf87cd07", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-12e182f6c53e9824", "migration": false}, {"id": "12.0-237fab24636d86eb", "cves": [], "html": "<p>\u5141\u8bb8 <a href=\"/docs/12/datatype-character.html#DATATYPE-CHARACTER-SPECIAL-TABLE\" title=\"\u8868\u00a08.5.\u00a0\u7279\u6b8a\u5b57\u7b26\u7c7b\u578b\">name</a> \u6570\u636e\u7c7b\u578b\u4e0e\u5176\u4ed6\u6587\u672c\u7c7b\u578b\u66f4\u987a\u7545\u5730\u6bd4\u8f83\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/2ece7c07d\">\u00a7</a></p>\n<p><code>name</code> \u7c7b\u578b\u73b0\u5728\u7684\u884c\u4e3a\u5f88\u50cf\u57fa\u4e8e <code>text</code> \u7c7b\u578b\u3001\u9ed8\u8ba4\u6392\u5e8f\u89c4\u5219\u4e3a <span>\u201c<span>C</span>\u201d</span> \u7684\u57df\u3002\u8fd9\u4f7f\u8de8\u7c7b\u578b\u6bd4\u8f83\u80fd\u591f\u5f97\u5230\u66f4\u9ad8\u6548\u7684\u5904\u7406\u3002</p>", "text": "\u5141\u8bb8 name \u6570\u636e\u7c7b\u578b\u4e0e\u5176\u4ed6\u6587\u672c\u7c7b\u578b\u66f4\u987a\u7545\u5730\u6bd4\u8f83\uff08Tom Lane\uff09\u00a7 name \u7c7b\u578b\u73b0\u5728\u7684\u884c\u4e3a\u5f88\u50cf\u57fa\u4e8e text \u7c7b\u578b\u3001\u9ed8\u8ba4\u6392\u5e8f\u89c4\u5219\u4e3a \u201cC\u201d \u7684\u57df\u3002\u8fd9\u4f7f\u8de8\u7c7b\u578b\u6bd4\u8f83\u80fd\u591f\u5f97\u5230\u66f4\u9ad8\u6548\u7684\u5904\u7406\u3002", "title": "\u5141\u8bb8 name \u6570\u636e\u7c7b\u578b\u4e0e\u5176\u4ed6\u6587\u672c\u7c7b\u578b\u66f4\u987a\u7545\u5730\u6bd4\u8f83", "commits": ["2ece7c07d"], "section": "\u6570\u636e\u7c7b\u578b", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.6", "source_hash": "2131690f89a6af3451f147e876649e1ba22a52c4554a52b8f09d21f9e3df0d76", "section_path": ["\u6570\u636e\u7c7b\u578b"], "commit_groups": [["2ece7c07d"]], "identity_text": "Allow data type name to more seamlessly be compared to other text types (Tom Lane) Type name now behaves much like a domain over type text that has default collation C. This allows cross-type comparisons to be processed more efficiently.", "commit_aliases": ["2ece7c07d"], "source_commits": ["2ece7c07d"], "source_entry_id": "12.0/changes/099", "db_id": "0460bbdea8ecafe6e5a57921dfaeb0c6", "patch_ids": ["db9103343b3aa3b93b43104634c98567"], "statement_hash": "599421daa1e32a6d0df78b8b2a64355aa1856bf82a97e6babf32d5bf01d0a082", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-237fab24636d86eb", "migration": false}, {"id": "12.0-80d0b9f50b98b47c", "cves": [], "html": "<p>\u6dfb\u52a0\u5bf9 <acronym>SQL/JSON</acronym> <a href=\"/docs/12/functions-json.html#FUNCTIONS-SQLJSON-PATH\" title=\"9.15.2.\u00a0SQL/JSON \u8def\u5f84\u8bed\u8a00\">\u8def\u5f84</a>\u8bed\u8a00\u7684\u652f\u6301\uff08Nikita Glukhov\uff0cTeodor Sigaev\uff0cAlexander Korotkov\uff0cOleg Bartunov\uff0cLiudmila Mantrova\uff09<a href=\"https://postgr.es/c/72b646033\">\u00a7</a> <a href=\"https://postgr.es/c/16d489b0f\">\u00a7</a> <a href=\"https://postgr.es/c/0a02e2ae0\">\u00a7</a></p>\n<p>\u8fd9\u5141\u8bb8\u4f7f\u7528\u7b26\u5408 <acronym>SQL</acronym> \u6807\u51c6\u7684\u8bed\u8a00\u5bf9 <code>JSON</code> \u503c\u6267\u884c\u590d\u6742\u67e5\u8be2\u3002</p>", "text": "\u6dfb\u52a0\u5bf9 SQL/JSON \u8def\u5f84\u8bed\u8a00\u7684\u652f\u6301\uff08Nikita Glukhov\uff0cTeodor Sigaev\uff0cAlexander Korotkov\uff0cOleg Bartunov\uff0cLiudmila Mantrova\uff09\u00a7 \u00a7 \u00a7 \u8fd9\u5141\u8bb8\u4f7f\u7528\u7b26\u5408 SQL \u6807\u51c6\u7684\u8bed\u8a00\u5bf9 JSON \u503c\u6267\u884c\u590d\u6742\u67e5\u8be2\u3002", "title": "\u6dfb\u52a0\u5bf9 SQL/JSON \u8def\u5f84\u8bed\u8a00\u7684\u652f\u6301", "commits": ["0a02e2ae0", "16d489b0f", "72b646033"], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "994d88fcd4b8546ca7d5d45db49200ac21fe72dec940fcd6253408d99efe82d3", "section_path": ["\u51fd\u6570"], "commit_groups": [["0a02e2ae0"], ["16d489b0f"], ["72b646033"]], "identity_text": "Add support for the SQL/JSON path language (Nikita Glukhov, Teodor Sigaev, Alexander Korotkov, Oleg Bartunov, Liudmila Mantrova) This allows execution of complex queries on JSON values using an SQL-standard language.", "commit_aliases": ["0a02e2ae0", "16d489b0f", "72b646033"], "source_commits": ["0a02e2ae0", "16d489b0f", "72b646033"], "source_entry_id": "12.0/changes/100", "db_id": "1586a0b281145614252bf58832dd201e", "patch_ids": ["16b15f958fb2c879be97475353c748ab", "568941ae39be55f78be6589b12ec4f6c", "b17170eb407e1425f618e61e18270ce6"], "statement_hash": "6b00558c4ecb1270f8a4cffab4efb4e474283e6950cc41ae9df78d974f38e582", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-80d0b9f50b98b47c", "migration": false}, {"id": "12.0-e7faeb1ebef991ba", "cves": [], "html": "<p>\u6dfb\u52a0\u5bf9<a href=\"/docs/12/functions-math.html#FUNCTIONS-MATH-HYP-TABLE\" title=\"\u8868\u00a09.8.\u00a0\u53cc\u66f2\u51fd\u6570\">\u53cc\u66f2\u51fd\u6570</a>\u7684\u652f\u6301\uff08L\u00e6titia Avrot\uff09<a href=\"https://postgr.es/c/f1d85aa98\">\u00a7</a></p>\n<p>\u540c\u65f6\u4e3a\u7b26\u5408\u6807\u51c6\uff0c\u6dfb\u52a0 <code>log10()</code> \u4f5c\u4e3a <code>log()</code> \u7684\u522b\u540d\u3002</p>", "text": "\u6dfb\u52a0\u5bf9\u53cc\u66f2\u51fd\u6570\u7684\u652f\u6301\uff08L\u00e6titia Avrot\uff09\u00a7 \u540c\u65f6\u4e3a\u7b26\u5408\u6807\u51c6\uff0c\u6dfb\u52a0 log10() \u4f5c\u4e3a log() \u7684\u522b\u540d\u3002", "title": "\u6dfb\u52a0\u5bf9\u53cc\u66f2\u51fd\u6570\u7684\u652f\u6301", "commits": ["f1d85aa98"], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "d68b0c567a74264c4514d983f541832071d098c77e663fea29eaab54bc6692cb", "section_path": ["\u51fd\u6570"], "commit_groups": [["f1d85aa98"]], "identity_text": "Add support for hyperbolic functions (L\u00e6titia Avrot) Also add log10() as an alias for log(), for standards compliance.", "commit_aliases": ["f1d85aa98"], "source_commits": ["f1d85aa98"], "source_entry_id": "12.0/changes/101", "db_id": "06cb09d0d8f6b1300bd3b4d4e50a530b", "patch_ids": ["10d014e167f10064948e7b5faf6db732"], "statement_hash": "570d5cb4626b44023e880e81059b52ee8ee9505f9a8b9da4d0304db9dfb1462e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-e7faeb1ebef991ba", "migration": false}, {"id": "12.0-d8c1f351478eaf5a", "cves": [], "html": "<p>\u91c7\u7528\u66f4\u7cbe\u786e\u7684\u7b97\u6cd5\uff0c\u63d0\u9ad8 <a href=\"/docs/12/functions-aggregate.html#FUNCTIONS-AGGREGATE-STATISTICS-TABLE\" title=\"\u8868\u00a09.56.\u00a0\u7528\u4e8e\u7edf\u8ba1\u7684\u805a\u5408\u51fd\u6570\"><code>variance()</code></a> \u7b49\u7edf\u8ba1\u805a\u5408\u7684\u7cbe\u5ea6\uff08Dean Rasheed\uff09<a href=\"https://postgr.es/c/e954a727f\">\u00a7</a></p>", "text": "\u91c7\u7528\u66f4\u7cbe\u786e\u7684\u7b97\u6cd5\uff0c\u63d0\u9ad8 variance() \u7b49\u7edf\u8ba1\u805a\u5408\u7684\u7cbe\u5ea6\uff08Dean Rasheed\uff09\u00a7", "title": "\u91c7\u7528\u66f4\u7cbe\u786e\u7684\u7b97\u6cd5\uff0c\u63d0\u9ad8 variance() \u7b49\u7edf\u8ba1\u805a\u5408\u7684\u7cbe\u5ea6", "commits": ["e954a727f"], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "a4deaafcd4ba273b8d34e216bec124bea5a4180f7d8d4087a140902ca9591760", "section_path": ["\u51fd\u6570"], "commit_groups": [["e954a727f"]], "identity_text": "Improve the accuracy of statistical aggregates like variance() by using more precise algorithms (Dean Rasheed)", "commit_aliases": ["e954a727f"], "source_commits": ["e954a727f"], "source_entry_id": "12.0/changes/102", "db_id": "1414a0cab7555b28a39f41d7542473bf", "patch_ids": ["d5bb36949d051e7e16e50a7937d9d72f"], "statement_hash": "60fa401f95afc481e69e068bf3c7c71a7900cb136bac8f1c2afd3145e64f31cf", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d8c1f351478eaf5a", "migration": false}, {"id": "12.0-eda9fdb3b9c8c3d5", "cves": [], "html": "<p>\u5141\u8bb8 <a href=\"/docs/12/functions-datetime.html#FUNCTIONS-DATETIME-TABLE\" title=\"\u8868\u00a09.31.\u00a0\u65e5\u671f/\u65f6\u95f4\u51fd\u6570\"><code>date_trunc()</code></a> \u63a5\u53d7\u989d\u5916\u53c2\u6570\u6765\u63a7\u5236\u65f6\u533a\uff08Vik Fearing\uff0cTom Lane\uff09<a href=\"https://postgr.es/c/600b04d6b\">\u00a7</a></p>\n<p>\u8fd9\u6bd4\u4f7f\u7528 <code>AT TIME ZONE</code> \u5b50\u53e5\u66f4\u5feb\u3001\u66f4\u7b80\u5355\u3002</p>", "text": "\u5141\u8bb8 date_trunc() \u63a5\u53d7\u989d\u5916\u53c2\u6570\u6765\u63a7\u5236\u65f6\u533a\uff08Vik Fearing\uff0cTom Lane\uff09\u00a7 \u8fd9\u6bd4\u4f7f\u7528 AT TIME ZONE \u5b50\u53e5\u66f4\u5feb\u3001\u66f4\u7b80\u5355\u3002", "title": "\u5141\u8bb8 date_trunc() \u63a5\u53d7\u989d\u5916\u53c2\u6570\u6765\u63a7\u5236\u65f6\u533a", "commits": ["600b04d6b"], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "643b27e6825476744b699d166eeaaef2b80823518ff845ea624cd6e0d82d09dd", "section_path": ["\u51fd\u6570"], "commit_groups": [["600b04d6b"]], "identity_text": "Allow date_trunc() to have an additional argument to control the time zone (Vik Fearing, Tom Lane) This is faster and simpler than using the AT TIME ZONE clause.", "commit_aliases": ["600b04d6b"], "source_commits": ["600b04d6b"], "source_entry_id": "12.0/changes/103", "db_id": "4304dc6f5112cd0d7c854b1c3ce4b1b5", "patch_ids": ["82a26773b88c124482dc693a1c81fc10"], "statement_hash": "e0cbd6c63d278429d53b6cb68e2298b074b2b41d649038a351dde0acfdf8decb", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-eda9fdb3b9c8c3d5", "migration": false}, {"id": "12.0-80b55bd72d0d122a", "cves": [], "html": "<p>\u8c03\u6574 <a href=\"/docs/12/functions-formatting.html#FUNCTIONS-FORMATTING-TABLE\" title=\"\u8868\u00a09.24.\u00a0\u683c\u5f0f\u5316\u51fd\u6570\"><code>to_timestamp()</code></a>/<code>to_date()</code> \u51fd\u6570\uff0c\u4f7f\u5176\u5bf9\u6a21\u677f\u4e0d\u5339\u914d\u66f4\u52a0\u5bbd\u5bb9\uff08Artur Zakirov\uff0cAlexander Korotkov\uff0cLiudmila Mantrova\uff09<a href=\"https://postgr.es/c/cf9846724\">\u00a7</a></p>\n<p>\u8fd9\u79cd\u65b0\u884c\u4e3a\u66f4\u63a5\u8fd1 <span>Oracle</span> \u7684\u540c\u540d\u51fd\u6570\u3002</p>", "text": "\u8c03\u6574 to_timestamp()/to_date() \u51fd\u6570\uff0c\u4f7f\u5176\u5bf9\u6a21\u677f\u4e0d\u5339\u914d\u66f4\u52a0\u5bbd\u5bb9\uff08Artur Zakirov\uff0cAlexander Korotkov\uff0cLiudmila Mantrova\uff09\u00a7 \u8fd9\u79cd\u65b0\u884c\u4e3a\u66f4\u63a5\u8fd1 Oracle \u7684\u540c\u540d\u51fd\u6570\u3002", "title": "\u8c03\u6574 to_timestamp()/to_date() \u51fd\u6570\uff0c\u4f7f\u5176\u5bf9\u6a21\u677f\u4e0d\u5339\u914d\u66f4\u52a0\u5bbd\u5bb9", "commits": ["cf9846724"], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "281d2bea4f26811aa25ef53e4a08250c353537f021f17897fa79ac0efac21015", "section_path": ["\u51fd\u6570"], "commit_groups": [["cf9846724"]], "identity_text": "Adjust to_timestamp()/to_date() functions to be more forgiving of template mismatches (Artur Zakirov, Alexander Korotkov, Liudmila Mantrova) This new behavior more closely matches the Oracle functions of the same name.", "commit_aliases": ["cf9846724"], "source_commits": ["cf9846724"], "source_entry_id": "12.0/changes/104", "db_id": "9f87683fe3f34279bfaa4afe6c6be680", "patch_ids": ["d31cb198867ebbbce4a440fd4cf5f4a1"], "statement_hash": "facec98e936cbbebe9cffcd76fb596a0a9803a0113dc8a3b5e5ca10236ac0a6d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-80b55bd72d0d122a", "migration": false}, {"id": "12.0-a927a798e8f3683d", "cves": [], "html": "<p>\u4fee\u590d <a href=\"/docs/12/functions-xml.html\" title=\"9.14.\u00a0XML \u51fd\u6570\"><acronym>XML</acronym> \u51fd\u6570</a>\u4e2d\u7684\u5404\u7c7b\u7f3a\u9677\uff08Pavel Stehule\uff0cMarkus Winand\uff0cChapman Flack\uff09<a href=\"https://postgr.es/c/251cf2e27\">\u00a7</a></p>\n<p>\u5177\u4f53\u800c\u8a00\uff0c\u4fee\u590d <code>XMLTABLE</code>\u3001<code>xpath()</code> \u548c <code>xmlexists()</code> \u4e2d\u67d0\u4e9b\u8282\u70b9\u6ca1\u6709\u8f93\u51fa\u3001\u629b\u51fa\u610f\u5916\u9519\u8bef\uff0c\u6216\u9057\u6f0f XML \u7279\u6b8a\u5b57\u7b26\u5fc5\u8981\u8f6c\u4e49\u7684\u60c5\u51b5\u3002</p>", "text": "\u4fee\u590d XML \u51fd\u6570\u4e2d\u7684\u5404\u7c7b\u7f3a\u9677\uff08Pavel Stehule\uff0cMarkus Winand\uff0cChapman Flack\uff09\u00a7 \u5177\u4f53\u800c\u8a00\uff0c\u4fee\u590d XMLTABLE\u3001xpath() \u548c xmlexists() \u4e2d\u67d0\u4e9b\u8282\u70b9\u6ca1\u6709\u8f93\u51fa\u3001\u629b\u51fa\u610f\u5916\u9519\u8bef\uff0c\u6216\u9057\u6f0f XML \u7279\u6b8a\u5b57\u7b26\u5fc5\u8981\u8f6c\u4e49\u7684\u60c5\u51b5\u3002", "title": "\u4fee\u590d XML \u51fd\u6570\u4e2d\u7684\u5404\u7c7b\u7f3a\u9677", "commits": ["251cf2e27"], "section": "\u51fd\u6570", "category": "bugfix", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "38c5751c7dc3af99dff58cfa4e9ae2f48005a6324bfb4bd1eba730404f71309a", "section_path": ["\u51fd\u6570"], "commit_groups": [["251cf2e27"]], "identity_text": "Fix assorted bugs in XML functions (Pavel Stehule, Markus Winand, Chapman Flack) Specifically, in XMLTABLE, xpath(), and xmlexists(), fix some cases where nothing was output for a node, or an unexpected error was thrown, or necessary escaping of XML special characters was omitted.", "commit_aliases": ["251cf2e27"], "source_commits": ["251cf2e27"], "source_entry_id": "12.0/changes/105", "db_id": "3b0fa93ace51ac51ba21f294bd9f8d5b", "patch_ids": ["2faa6068a88d24ed1e6cc166d7f7c1a4"], "statement_hash": "a40900e933f658c6e8e471bed0cfc4fcd001fdb342cf17e37605cc66c43ff3fc", "relations": [], "category_label": "BUG \u4fee\u590d", "url": "/docs/compare/?release=12.0#12.0-a927a798e8f3683d", "migration": false}, {"id": "12.0-0d6983ea0574a06f", "cves": [], "html": "<p>\u5141\u8bb8\u5728 <code>XMLEXISTS</code> \u548c <code>XMLTABLE</code> \u4e2d\u4f7f\u7528 <code>BY VALUE</code> \u5b50\u53e5\uff08Chapman Flack\uff09<a href=\"https://postgr.es/c/eaaa5986a\">\u00a7</a></p>\n<p>\u8fd9\u4e2a SQL \u6807\u51c6\u5b50\u53e5\u5728 <span>PostgreSQL</span> \u7684\u5b9e\u73b0\u4e2d\u6ca1\u6709\u4f5c\u7528\uff0c\u4f46\u4ee5\u524d\u88ab\u4e0d\u5fc5\u8981\u5730\u62d2\u7edd\u3002</p>", "text": "\u5141\u8bb8\u5728 XMLEXISTS \u548c XMLTABLE \u4e2d\u4f7f\u7528 BY VALUE \u5b50\u53e5\uff08Chapman Flack\uff09\u00a7 \u8fd9\u4e2a SQL \u6807\u51c6\u5b50\u53e5\u5728 PostgreSQL \u7684\u5b9e\u73b0\u4e2d\u6ca1\u6709\u4f5c\u7528\uff0c\u4f46\u4ee5\u524d\u88ab\u4e0d\u5fc5\u8981\u5730\u62d2\u7edd\u3002", "title": "\u5141\u8bb8\u5728 XMLEXISTS \u548c XMLTABLE \u4e2d\u4f7f\u7528 BY VALUE \u5b50\u53e5", "commits": ["eaaa5986a"], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "53fd6bf2caaa3dd4909b22afe47104fdfb3726df21e1ee9241198d58cff632de", "section_path": ["\u51fd\u6570"], "commit_groups": [["eaaa5986a"]], "identity_text": "Allow the BY VALUE clause in XMLEXISTS and XMLTABLE (Chapman Flack) This SQL-standard clause has no effect in PostgreSQL's implementation, but it was unnecessarily being rejected.", "commit_aliases": ["eaaa5986a"], "source_commits": ["eaaa5986a"], "source_entry_id": "12.0/changes/106", "db_id": "1c2383816f96a4e0dac5aded9ae8bb3e", "patch_ids": ["7b61764fb26efb36ac3ab940951c9504"], "statement_hash": "033adc62d1b77dcc18f6d69a5acd77a18eeb74482a2cd6d77977070d6a2abdbc", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-0d6983ea0574a06f", "migration": false}, {"id": "12.0-9723cb07f3fc9bd3", "cves": [], "html": "<p>\u9632\u6b62\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u8fd0\u884c <a href=\"/docs/12/functions-info.html#FUNCTIONS-INFO-SESSION-TABLE\" title=\"\u8868\u00a09.63.\u00a0\u4f1a\u8bdd\u4fe1\u606f\u51fd\u6570\"><code>current_schema()</code></a> \u548c <code>current_schemas()</code>\uff0c\u56e0\u4e3a\u5b83\u4eec\u5e76\u975e\u5e76\u884c\u5b89\u5168\uff08Micha\u00ebl Paquier\uff09<a href=\"https://postgr.es/c/5bde1651b\">\u00a7</a></p>", "text": "\u9632\u6b62\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u8fd0\u884c current_schema() \u548c current_schemas()\uff0c\u56e0\u4e3a\u5b83\u4eec\u5e76\u975e\u5e76\u884c\u5b89\u5168\uff08Micha\u00ebl Paquier\uff09\u00a7", "title": "\u9632\u6b62\u5e76\u884c\u5de5\u4f5c\u8fdb\u7a0b\u8fd0\u884c current_schema() \u548c current_schemas()\uff0c\u56e0\u4e3a\u5b83\u4eec\u5e76\u975e\u5e76\u884c\u5b89\u5168", "commits": ["5bde1651b"], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "34497bd0a04550c5b2ad57d4af4ca3e1fa306e10ebd7619b4bcda7f6bb6602b9", "section_path": ["\u51fd\u6570"], "commit_groups": [["5bde1651b"]], "identity_text": "Prevent current_schema() and current_schemas() from being run by parallel workers, as they are not parallel-safe (Micha\u00ebl Paquier)", "commit_aliases": ["5bde1651b"], "source_commits": ["5bde1651b"], "source_entry_id": "12.0/changes/107", "db_id": "5db82f5c12a93bd10eab35984bae85d4", "patch_ids": ["deb936cbd889b4da6fe60c12b7cca0e1"], "statement_hash": "f5672b5d2e492fc738f818dea5b54688158382a8d37ae1d67bc0cb34e142e2d2", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-9723cb07f3fc9bd3", "migration": false}, {"id": "12.0-758550e6c9f4a97b", "cves": [], "html": "<p>\u5bf9\u4e8e\u58f0\u660e\u8fd4\u56de <code>RECORD</code> \u7684<a href=\"/docs/12/queries-table-expressions.html#QUERIES-TABLEFUNCTIONS\" title=\"7.2.1.4.\u00a0\u8868\u51fd\u6570\">\u8868\u51fd\u6570</a>\uff0c\u5141\u8bb8\u5728\u67e5\u8be2\u7684\u5217\u5b9a\u4e49\u5217\u8868\u4e2d\u4f7f\u7528 <code>RECORD</code> \u548c <code>RECORD[]</code> \u4f5c\u4e3a\u5217\u7c7b\u578b\uff08Elvis Pranskevichus\uff09<a href=\"https://postgr.es/c/5f5c01459\">\u00a7</a></p>", "text": "\u5bf9\u4e8e\u58f0\u660e\u8fd4\u56de RECORD \u7684\u8868\u51fd\u6570\uff0c\u5141\u8bb8\u5728\u67e5\u8be2\u7684\u5217\u5b9a\u4e49\u5217\u8868\u4e2d\u4f7f\u7528 RECORD \u548c RECORD[] \u4f5c\u4e3a\u5217\u7c7b\u578b\uff08Elvis Pranskevichus\uff09\u00a7", "title": "\u5bf9\u4e8e\u58f0\u660e\u8fd4\u56de RECORD \u7684\u8868\u51fd\u6570\uff0c\u5141\u8bb8\u5728\u67e5\u8be2\u7684\u5217\u5b9a\u4e49\u5217\u8868\u4e2d\u4f7f\u7528 RECORD \u548c RECORD[] \u4f5c\u4e3a\u5217\u7c7b\u578b", "commits": ["5f5c01459"], "section": "\u51fd\u6570", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.7", "source_hash": "6fbeebc861649c95a2570a7c5cc0e2a9d5c00f1dc07653b1b8b371fbb4e43811", "section_path": ["\u51fd\u6570"], "commit_groups": [["5f5c01459"]], "identity_text": "Allow RECORD and RECORD[] to be used as column types in a query's column definition list for a table function that is declared to return RECORD (Elvis Pranskevichus)", "commit_aliases": ["5f5c01459"], "source_commits": ["5f5c01459"], "source_entry_id": "12.0/changes/108", "db_id": "cf2d35caa1406b67a5d281aa8f786b56", "patch_ids": ["c56fee817b9336e532cbd5699429976c"], "statement_hash": "87c680b68da498ff8cd31d120f1a564f5d8ab11f4906a52dd10f674c45bee754", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-758550e6c9f4a97b", "migration": false}, {"id": "12.0-3262e7d1a29a7f62", "cves": [], "html": "<p>\u5141\u8bb8\u5728\u540c\u4e00 PL/pgSQL \u51fd\u6570\u4e2d\u4f7f\u7528 SQL \u547d\u4ee4\u53ca\u4e0e\u8fd9\u4e9b\u547d\u4ee4\u540c\u540d\u7684\u53d8\u91cf\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/4879a5172\">\u00a7</a></p>\n<p>\u4f8b\u5982\uff0c\u5141\u8bb8\u5728\u8c03\u7528 <code>COMMENT</code> <acronym>SQL</acronym> \u547d\u4ee4\u7684\u51fd\u6570\u4e2d\u5b58\u5728\u540d\u4e3a <code>comment</code> \u7684\u53d8\u91cf\u3002\u4ee5\u524d\uff0c\u8fd9\u79cd\u7ec4\u5408\u4f1a\u5bfc\u81f4\u89e3\u6790\u9519\u8bef\u3002</p>", "text": "\u5141\u8bb8\u5728\u540c\u4e00 PL/pgSQL \u51fd\u6570\u4e2d\u4f7f\u7528 SQL \u547d\u4ee4\u53ca\u4e0e\u8fd9\u4e9b\u547d\u4ee4\u540c\u540d\u7684\u53d8\u91cf\uff08Tom Lane\uff09\u00a7 \u4f8b\u5982\uff0c\u5141\u8bb8\u5728\u8c03\u7528 COMMENT SQL \u547d\u4ee4\u7684\u51fd\u6570\u4e2d\u5b58\u5728\u540d\u4e3a comment \u7684\u53d8\u91cf\u3002\u4ee5\u524d\uff0c\u8fd9\u79cd\u7ec4\u5408\u4f1a\u5bfc\u81f4\u89e3\u6790\u9519\u8bef\u3002", "title": "\u5141\u8bb8\u5728\u540c\u4e00 PL/pgSQL \u51fd\u6570\u4e2d\u4f7f\u7528 SQL \u547d\u4ee4\u53ca\u4e0e\u8fd9\u4e9b\u547d\u4ee4\u540c\u540d\u7684\u53d8\u91cf", "commits": ["4879a5172"], "section": "PL/pgSQL", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.8", "source_hash": "17c248a6cb17e2862e4d181e113c8974dabc8cb6330c388b1818574ded0ff479", "section_path": ["PL/pgSQL"], "commit_groups": [["4879a5172"]], "identity_text": "Allow SQL commands and variables with the same names as those commands to be used in the same PL/pgSQL function (Tom Lane) For example, allow a variable called comment to exist in a function that calls the COMMENT SQL command. Previously this combination caused a parse error.", "commit_aliases": ["4879a5172"], "source_commits": ["4879a5172"], "source_entry_id": "12.0/changes/109", "db_id": "e31b75b344e850bd9a294614858145ec", "patch_ids": ["970df9a3f77d1b60eb66f6d9a962cd02"], "statement_hash": "0550ec13fac453d6888d55fe409c86e55ae88b86473556d87b897715b7b4bdfb", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-3262e7d1a29a7f62", "migration": false}, {"id": "12.0-4e181a4e7137ffec", "cves": [], "html": "<p>\u4e3a PL/pgSQL \u6dfb\u52a0\u65b0\u7684\u53ef\u9009\u8b66\u544a\u548c\u9519\u8bef\u68c0\u67e5\uff08Pavel Stehule\uff09<a href=\"https://postgr.es/c/167075be3\">\u00a7</a></p>\n<p>\u8fd9\u4e9b\u65b0\u68c0\u67e5\u5141\u8bb8\u5728\u8fd0\u884c\u65f6\u9a8c\u8bc1 <code>INTO</code> \u7684\u5217\u6570\u4ee5\u53ca\u7ed3\u679c\u662f\u5426\u4e3a\u5355\u884c\u3002</p>", "text": "\u4e3a PL/pgSQL \u6dfb\u52a0\u65b0\u7684\u53ef\u9009\u8b66\u544a\u548c\u9519\u8bef\u68c0\u67e5\uff08Pavel Stehule\uff09\u00a7 \u8fd9\u4e9b\u65b0\u68c0\u67e5\u5141\u8bb8\u5728\u8fd0\u884c\u65f6\u9a8c\u8bc1 INTO \u7684\u5217\u6570\u4ee5\u53ca\u7ed3\u679c\u662f\u5426\u4e3a\u5355\u884c\u3002", "title": "\u4e3a PL/pgSQL \u6dfb\u52a0\u65b0\u7684\u53ef\u9009\u8b66\u544a\u548c\u9519\u8bef\u68c0\u67e5", "commits": ["167075be3"], "section": "PL/pgSQL", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.8", "source_hash": "018f26cc998b44620b7585ca1dfe582a848fd9d8619c7b6cc7bdebaf941fecd8", "section_path": ["PL/pgSQL"], "commit_groups": [["167075be3"]], "identity_text": "Add new optional warning and error checks to PL/pgSQL (Pavel Stehule) The new checks allow for run-time validation of INTO column counts and single-row results.", "commit_aliases": ["167075be3"], "source_commits": ["167075be3"], "source_entry_id": "12.0/changes/110", "db_id": "82efaaa8826c2b363d8cd92bc25871b2", "patch_ids": ["d42faef1a65b3c6622e56a94b594749b"], "statement_hash": "f3d9592a4335d16a678a47a3cfdaad8ae6f4adc2afd03f63b9b86b36b5678eb9", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-4e181a4e7137ffec", "migration": false}, {"id": "12.0-5629245fde067c8f", "cves": [], "html": "<p>\u6dfb\u52a0\u8fde\u63a5\u53c2\u6570<a href=\"/docs/12/libpq.html#LIBPQ-TCP-USER-TIMEOUT\">tcp_user_timeout</a>\uff0c\u4ee5\u63a7\u5236 <span>libpq</span> \u7684 <acronym>TCP</acronym> \u8d85\u65f6\uff08Ryohei Nagaura\uff09<a href=\"https://postgr.es/c/249d64999\">\u00a7</a></p>", "text": "\u6dfb\u52a0\u8fde\u63a5\u53c2\u6570tcp_user_timeout\uff0c\u4ee5\u63a7\u5236 libpq \u7684 TCP \u8d85\u65f6\uff08Ryohei Nagaura\uff09\u00a7", "title": "\u6dfb\u52a0\u8fde\u63a5\u53c2\u6570tcp_user_timeout\uff0c\u4ee5\u63a7\u5236 libpq \u7684 TCP \u8d85\u65f6", "commits": ["249d64999"], "section": "\u5ba2\u6237\u7aef\u63a5\u53e3", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9", "source_hash": "ad6e36f035ab73c79bc69d12634ae19d75ef0384486d33345f1232e800e74696", "section_path": ["\u5ba2\u6237\u7aef\u63a5\u53e3"], "commit_groups": [["249d64999"]], "identity_text": "Add connection parameter libpq-tcp-user-timeout to control libpq's TCP timeout (Ryohei Nagaura)", "commit_aliases": ["249d64999"], "source_commits": ["249d64999"], "source_entry_id": "12.0/changes/111", "db_id": "6cdb02aaf10f70c32c4fa280b47ff16d", "patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"], "statement_hash": "b7aecfa776c3ce1693c6703745dfde3f8a502d30cff5487dafbb27e51f1eaec5", "relations": [{"rule": 2, "type": "related", "target": "0ed4ea34f97ff2c06b766fe41327709b", "evidence": {"same_day": true, "patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"], "ambiguous_patch_ids": ["e1d646e699a8d1ecb622399096f1c3c4"]}}], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-5629245fde067c8f", "migration": false}, {"id": "12.0-d2ea975b98e40dd8", "cves": [], "html": "<p>\u5141\u8bb8 <span>libpq</span>\uff08\u4ee5\u53ca <span>psql</span>\uff09\u5728\u9519\u8bef\u6d88\u606f\u4e2d\u4ec5\u62a5\u544a <code>SQLSTATE</code> \u503c\uff08Didier Gautheron\uff09<a href=\"https://postgr.es/c/7bac3acab\">\u00a7</a></p>", "text": "\u5141\u8bb8 libpq\uff08\u4ee5\u53ca psql\uff09\u5728\u9519\u8bef\u6d88\u606f\u4e2d\u4ec5\u62a5\u544a SQLSTATE \u503c\uff08Didier Gautheron\uff09\u00a7", "title": "\u5141\u8bb8 libpq\uff08\u4ee5\u53ca psql\uff09\u5728\u9519\u8bef\u6d88\u606f\u4e2d\u4ec5\u62a5\u544a SQLSTATE \u503c", "commits": ["7bac3acab"], "section": "\u5ba2\u6237\u7aef\u63a5\u53e3", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9", "source_hash": "fb020a8998bda22501e33210361e0f484ec3a0b4bfee20dc6ee7083601eefcd1", "section_path": ["\u5ba2\u6237\u7aef\u63a5\u53e3"], "commit_groups": [["7bac3acab"]], "identity_text": "Allow libpq (and thus psql) to report only the SQLSTATE value in error messages (Didier Gautheron)", "commit_aliases": ["7bac3acab"], "source_commits": ["7bac3acab"], "source_entry_id": "12.0/changes/112", "db_id": "b1eeec5f591a9bb90f482c54d539a7bf", "patch_ids": ["b1b108684a665b50ef87f2e5a74ab410"], "statement_hash": "296db90d68835ea598b3a3ab7b4a818b62dd9fe1f5b0c34c681d78f1f9ece81e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d2ea975b98e40dd8", "migration": false}, {"id": "12.0-2f0c0b46da054303", "cves": [], "html": "<p>\u6dfb\u52a0 <span>libpq</span> \u51fd\u6570 <a href=\"/docs/12/libpq-misc.html#LIBPQ-PQRESULTMEMORYSIZE\"><code>PQresultMemorySize()</code></a>\uff0c\u4ee5\u62a5\u544a\u67e5\u8be2\u7ed3\u679c\u4f7f\u7528\u7684\u5185\u5b58\uff08Lars Kanis\uff0cTom Lane\uff09<a href=\"https://postgr.es/c/2970afa6c\">\u00a7</a></p>", "text": "\u6dfb\u52a0 libpq \u51fd\u6570 PQresultMemorySize()\uff0c\u4ee5\u62a5\u544a\u67e5\u8be2\u7ed3\u679c\u4f7f\u7528\u7684\u5185\u5b58\uff08Lars Kanis\uff0cTom Lane\uff09\u00a7", "title": "\u6dfb\u52a0 libpq \u51fd\u6570 PQresultMemorySize()\uff0c\u4ee5\u62a5\u544a\u67e5\u8be2\u7ed3\u679c\u4f7f\u7528\u7684\u5185\u5b58", "commits": ["2970afa6c"], "section": "\u5ba2\u6237\u7aef\u63a5\u53e3", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9", "source_hash": "a85cb8d31572a3f1a82104dca43291621500df8cdc2a311bd8072135aa8f85e5", "section_path": ["\u5ba2\u6237\u7aef\u63a5\u53e3"], "commit_groups": [["2970afa6c"]], "identity_text": "Add libpq function PQresultMemorySize() to report the memory used by a query result (Lars Kanis, Tom Lane)", "commit_aliases": ["2970afa6c"], "source_commits": ["2970afa6c"], "source_entry_id": "12.0/changes/113", "db_id": "2438973de63c84922fc9d2aa955870a9", "patch_ids": ["acd9297894fb9c20e05a117eab29a848"], "statement_hash": "1c15b524431ebabfa869142cfa62e9aa533b89af205e439ad9cdeda73755726c", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-2f0c0b46da054303", "migration": false}, {"id": "12.0-6f4720c5dfc7db6f", "cves": [], "html": "<p>\u79fb\u9664 <span>libpq</span> \u7684 <code>options</code> \u8fde\u63a5\u53c2\u6570\u4e0a\u7684\u4e0d\u663e\u793a/\u8c03\u8bd5\u6807\u5fd7\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/1fea1e325\">\u00a7</a></p>\n<p>\u8fd9\u5141\u8bb8 <span>postgres_fdw</span> \u8bbe\u7f6e\u8be5\u53c2\u6570\u3002</p>", "text": "\u79fb\u9664 libpq \u7684 options \u8fde\u63a5\u53c2\u6570\u4e0a\u7684\u4e0d\u663e\u793a/\u8c03\u8bd5\u6807\u5fd7\uff08Peter Eisentraut\uff09\u00a7 \u8fd9\u5141\u8bb8 postgres_fdw \u8bbe\u7f6e\u8be5\u53c2\u6570\u3002", "title": "\u79fb\u9664 libpq \u7684 options \u8fde\u63a5\u53c2\u6570\u4e0a\u7684\u4e0d\u663e\u793a/\u8c03\u8bd5\u6807\u5fd7", "commits": ["1fea1e325"], "section": "\u5ba2\u6237\u7aef\u63a5\u53e3", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9", "source_hash": "ea337f36889acd097c5f9da41d08fb6845f9d53571504fd177ef8cbccac74957", "section_path": ["\u5ba2\u6237\u7aef\u63a5\u53e3"], "commit_groups": [["1fea1e325"]], "identity_text": "Remove the no-display/debug flag from libpq's options connection parameter (Peter Eisentraut) This allows this parameter to be set by postgres_fdw.", "commit_aliases": ["1fea1e325"], "source_commits": ["1fea1e325"], "source_entry_id": "12.0/changes/114", "db_id": "8b21ccfc7ae0efc34381be889421dffa", "patch_ids": ["a654a979680d8eaa50e6aa436de3b2e0"], "statement_hash": "32ae72e5e513511ad52a620417361712771819e524a1a06cddd3540c2e7b542f", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-6f4720c5dfc7db6f", "migration": false}, {"id": "12.0-f527df4b919fff29", "cves": [], "html": "<p>\u5141\u8bb8<a href=\"/docs/12/app-ecpg.html\" title=\"ecpg\"><span><span>ecpg</span></span></a>\u521b\u5efa <code>bytea</code> \u6570\u636e\u7c7b\u578b\u7684\u53d8\u91cf\uff08Ryo Matsumura\uff09<a href=\"https://postgr.es/c/050710b36\">\u00a7</a></p>\n<p>\u8fd9\u5141\u8bb8 ECPG \u5ba2\u6237\u7aef\u76f4\u63a5\u5904\u7406 <code>bytea</code> \u6570\u636e\uff0c\u800c\u65e0\u9700\u4f7f\u7528\u7f16\u7801\u5f62\u5f0f\u3002</p>", "text": "\u5141\u8bb8ecpg\u521b\u5efa bytea \u6570\u636e\u7c7b\u578b\u7684\u53d8\u91cf\uff08Ryo Matsumura\uff09\u00a7 \u8fd9\u5141\u8bb8 ECPG \u5ba2\u6237\u7aef\u76f4\u63a5\u5904\u7406 bytea \u6570\u636e\uff0c\u800c\u65e0\u9700\u4f7f\u7528\u7f16\u7801\u5f62\u5f0f\u3002", "title": "\u5141\u8bb8ecpg\u521b\u5efa bytea \u6570\u636e\u7c7b\u578b\u7684\u53d8\u91cf", "commits": ["050710b36"], "section": "\u5ba2\u6237\u7aef\u63a5\u53e3", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9", "source_hash": "97f96c39b6406c2c8991a97d4e03d2fa36741fa6447c4b65670b57f7a32636c9", "section_path": ["\u5ba2\u6237\u7aef\u63a5\u53e3"], "commit_groups": [["050710b36"]], "identity_text": "Allow app-ecpg to create variables of data type bytea (Ryo Matsumura) This allows ECPG clients to interact with bytea data directly, rather than using an encoded form.", "commit_aliases": ["050710b36"], "source_commits": ["050710b36"], "source_entry_id": "12.0/changes/115", "db_id": "58376bcf403b7cee7695265a7274365e", "patch_ids": ["ae602ecdbeea100c575a7381e380b063"], "statement_hash": "6ce48014d4716b18d218ae9cbe07cfad13e63fd46613532e34213ff743a0c2dd", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-f527df4b919fff29", "migration": false}, {"id": "12.0-f69b82b2199b4989", "cves": [], "html": "<p>\u4e3a <span>ECPG</span> \u6dfb\u52a0 <code>PREPARE AS</code> \u652f\u6301\uff08Ryo Matsumura\uff09<a href=\"https://postgr.es/c/a1dc6ab46\">\u00a7</a></p>", "text": "\u4e3a ECPG \u6dfb\u52a0 PREPARE AS \u652f\u6301\uff08Ryo Matsumura\uff09\u00a7", "title": "\u4e3a ECPG \u6dfb\u52a0 PREPARE AS \u652f\u6301", "commits": ["a1dc6ab46"], "section": "\u5ba2\u6237\u7aef\u63a5\u53e3", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.9", "source_hash": "20084652270a4a89b457035d66abe24d74dfdb8af03ec9bf1e578cb93b238463", "section_path": ["\u5ba2\u6237\u7aef\u63a5\u53e3"], "commit_groups": [["a1dc6ab46"]], "identity_text": "Add PREPARE AS support to ECPG (Ryo Matsumura)", "commit_aliases": ["a1dc6ab46"], "source_commits": ["a1dc6ab46"], "source_entry_id": "12.0/changes/116", "db_id": "ce6f8a4e4a20debc41354272641b5983", "patch_ids": ["6d43e64a6eb9f5ec58db8cce805d6440"], "statement_hash": "5beb05d0b9536c9d8c51bbaf5a4aa6efe9fa0547f36ca2c9532bfa22ddf5ab5d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-f69b82b2199b4989", "migration": false}, {"id": "12.0-afd8094122ff0fba", "cves": [], "html": "<p>\u5141\u8bb8<a href=\"/docs/12/app-vacuumdb.html\" title=\"vacuumdb\"><span><span>vacuumdb</span></span></a>\u6839\u636e\u8868\u7684\u56de\u5377\u89c6\u754c\u9009\u62e9\u9700\u8981\u6e05\u7406\u7684\u8868\uff08Nathan Bossart\uff09<a href=\"https://postgr.es/c/00d1e88d3\">\u00a7</a></p>\n<p>\u76f8\u5e94\u9009\u9879\u4e3a <code>--min-xid-age</code> \u548c <code>--min-mxid-age</code>\u3002</p>", "text": "\u5141\u8bb8vacuumdb\u6839\u636e\u8868\u7684\u56de\u5377\u89c6\u754c\u9009\u62e9\u9700\u8981\u6e05\u7406\u7684\u8868\uff08Nathan Bossart\uff09\u00a7 \u76f8\u5e94\u9009\u9879\u4e3a --min-xid-age \u548c --min-mxid-age\u3002", "title": "\u5141\u8bb8vacuumdb\u6839\u636e\u8868\u7684\u56de\u5377\u89c6\u754c\u9009\u62e9\u9700\u8981\u6e05\u7406\u7684\u8868", "commits": ["00d1e88d3"], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10", "source_hash": "64d419375f429460ea5c82d53486fd01b6bec0775f9ffab5583ab2040a50f0f6", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["00d1e88d3"]], "identity_text": "Allow app-vacuumdb to select tables for vacuum based on their wraparound horizon (Nathan Bossart) The options are --min-xid-age and --min-mxid-age.", "commit_aliases": ["00d1e88d3"], "source_commits": ["00d1e88d3"], "source_entry_id": "12.0/changes/117", "db_id": "bbf34c8596b003809414379eb8e8a78e", "patch_ids": ["c0e4454d9c15b78a52c9815ed569195b"], "statement_hash": "2b6abd4f891e8e8057bc1b3c57ff1e197882e54719112e8ab8c890efbf80a0de", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-afd8094122ff0fba", "migration": false}, {"id": "12.0-f0c1eb138168e13b", "cves": [], "html": "<p>\u5141\u8bb8 <span>vacuumdb</span> \u7981\u7528\u9501\u7b49\u5f85\u6216\u7981\u7528\u5bf9\u5168\u53ef\u89c1\u9875\u9762\u7684\u8df3\u8fc7\uff08Nathan Bossart\uff09<a href=\"https://postgr.es/c/354e95d1f\">\u00a7</a></p>\n<p>\u76f8\u5e94\u9009\u9879\u4e3a <code>--skip-locked</code> \u548c <code>--disable-page-skipping</code>\u3002</p>", "text": "\u5141\u8bb8 vacuumdb \u7981\u7528\u9501\u7b49\u5f85\u6216\u7981\u7528\u5bf9\u5168\u53ef\u89c1\u9875\u9762\u7684\u8df3\u8fc7\uff08Nathan Bossart\uff09\u00a7 \u76f8\u5e94\u9009\u9879\u4e3a --skip-locked \u548c --disable-page-skipping\u3002", "title": "\u5141\u8bb8 vacuumdb \u7981\u7528\u9501\u7b49\u5f85\u6216\u7981\u7528\u5bf9\u5168\u53ef\u89c1\u9875\u9762\u7684\u8df3\u8fc7", "commits": ["354e95d1f"], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10", "source_hash": "e78217e4275d061b52d64f8dee60d38bbe535ea83cbc040886d38893314b6434", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["354e95d1f"]], "identity_text": "Allow vacuumdb to disable waiting for locks or skipping all-visible pages (Nathan Bossart) The options are --skip-locked and --disable-page-skipping.", "commit_aliases": ["354e95d1f"], "source_commits": ["354e95d1f"], "source_entry_id": "12.0/changes/118", "db_id": "c106017a8bc520991b52363d82dc9ee9", "patch_ids": ["673166ece45615f638d4f3c9bb65af1d"], "statement_hash": "e988bea99cf0a725a692e682914a542bde326dd7a29092bce80e30a58cbbec62", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-f0c1eb138168e13b", "migration": false}, {"id": "12.0-dc975e10f1cf9750", "cves": [], "html": "<p>\u4e3a\u547d\u4ee4\u884c\u5de5\u5177\u7684\u8f93\u51fa\u6dfb\u52a0\u7740\u8272\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/cc8d41511\">\u00a7</a></p>\n<p>\u5c06\u73af\u5883\u53d8\u91cf <code>PG_COLOR</code> \u8bbe\u7f6e\u4e3a <code>always</code> \u6216 <code>auto</code> \u5373\u53ef\u542f\u7528\u6b64\u529f\u80fd\u3002\u53ef\u4ee5\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf <code>PG_COLORS</code>\uff0c\u4f7f\u7528 ANSI \u989c\u8272\u8f6c\u4e49\u7801\u8c03\u6574\u5177\u4f53\u989c\u8272\u3002\u4f8b\u5982\uff0c\u9ed8\u8ba4\u884c\u4e3a\u7b49\u540c\u4e8e <code>PG_COLORS=\"error=01;31:warning=01;35:locus=01\"</code>\u3002</p>", "text": "\u4e3a\u547d\u4ee4\u884c\u5de5\u5177\u7684\u8f93\u51fa\u6dfb\u52a0\u7740\u8272\uff08Peter Eisentraut\uff09\u00a7 \u5c06\u73af\u5883\u53d8\u91cf PG_COLOR \u8bbe\u7f6e\u4e3a always \u6216 auto \u5373\u53ef\u542f\u7528\u6b64\u529f\u80fd\u3002\u53ef\u4ee5\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf PG_COLORS\uff0c\u4f7f\u7528 ANSI \u989c\u8272\u8f6c\u4e49\u7801\u8c03\u6574\u5177\u4f53\u989c\u8272\u3002\u4f8b\u5982\uff0c\u9ed8\u8ba4\u884c\u4e3a\u7b49\u540c\u4e8e PG_COLORS=\"error=01;31:warning=01;35:locus=01\"\u3002", "title": "\u4e3a\u547d\u4ee4\u884c\u5de5\u5177\u7684\u8f93\u51fa\u6dfb\u52a0\u7740\u8272", "commits": ["cc8d41511"], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10", "source_hash": "5adbe351420a3279eecce495461405f1dbdecbfe75e8267cf900ea8bce03d598", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["cc8d41511"]], "identity_text": "Add colorization to the output of command-line utilities (Peter Eisentraut) This is enabled by setting the environment variable PG_COLOR to always or auto. The specific colors used can be adjusted by setting the environment variable PG_COLORS, using ANSI escape codes for colors. For example, the default behavior is equivalent to PG_COLORS=\"error=01;31:warning=01;35:locus=01\".", "commit_aliases": ["cc8d41511"], "source_commits": ["cc8d41511"], "source_entry_id": "12.0/changes/119", "db_id": "7d883199126da048eaa05b3db4317b83", "patch_ids": ["9520998690afe86c0110f8b2d9e2d62e"], "statement_hash": "869c4c4103bb1a2c99826fc7bd99b9a8e83532c3032ed9a5b01adaf0f4d94e6a", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-dc975e10f1cf9750", "migration": false}, {"id": "12.0-85d66595d932ad65", "cves": [], "html": "<p>\u5728 <span>psql</span> \u4e2d\u6dfb\u52a0 <acronym>CSV</acronym> \u8868\u683c\u8f93\u51fa\u6a21\u5f0f\uff08Daniel V\u00e9rit\u00e9\uff09<a href=\"https://postgr.es/c/aa2ba50c2\">\u00a7</a></p>\n<p>\u8fd9\u901a\u8fc7 <code>\\pset format csv</code> \u6216\u547d\u4ee4\u884c\u9009\u9879 <code>--csv</code> \u63a7\u5236\u3002</p>", "text": "\u5728 psql \u4e2d\u6dfb\u52a0 CSV \u8868\u683c\u8f93\u51fa\u6a21\u5f0f\uff08Daniel V\u00e9rit\u00e9\uff09\u00a7 \u8fd9\u901a\u8fc7 \\pset format csv \u6216\u547d\u4ee4\u884c\u9009\u9879 --csv \u63a7\u5236\u3002", "title": "\u5728 psql \u4e2d\u6dfb\u52a0 CSV \u8868\u683c\u8f93\u51fa\u6a21\u5f0f", "commits": ["aa2ba50c2"], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.3", "source_hash": "f77a0a28f01b97da4cc29f365669e6cd90af509ec6a50a4513e62e8af26c8298", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["aa2ba50c2"]], "identity_text": "Add CSV table output mode in psql (Daniel V\u00e9rit\u00e9) This is controlled by \\pset format csv or the command-line --csv option.", "commit_aliases": ["aa2ba50c2"], "source_commits": ["aa2ba50c2"], "source_entry_id": "12.0/changes/120", "db_id": "7fedba2553967302fbf979bc04da9520", "patch_ids": ["ec6e40f91820832ca34b2852cd308dcf"], "statement_hash": "e19bfbb439907df59c312662f120789369393be52e7a549111502f473931302f", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-85d66595d932ad65", "migration": false}, {"id": "12.0-99d7888a273df435", "cves": [], "html": "<p>\u5728 <span>psql</span> \u9488\u5bf9 SQL \u547d\u4ee4\u7684 <code>\\help</code> \u8f93\u51fa\u4e2d\u663e\u793a\u624b\u518c\u9875\u9762\u7684 <acronym>URL</acronym>\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/27f3dea64\">\u00a7</a></p>", "text": "\u5728 psql \u9488\u5bf9 SQL \u547d\u4ee4\u7684 \\help \u8f93\u51fa\u4e2d\u663e\u793a\u624b\u518c\u9875\u9762\u7684 URL\uff08Peter Eisentraut\uff09\u00a7", "title": "\u5728 psql \u9488\u5bf9 SQL \u547d\u4ee4\u7684 \\help \u8f93\u51fa\u4e2d\u663e\u793a\u624b\u518c\u9875\u9762\u7684 URL", "commits": ["27f3dea64"], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.3", "source_hash": "af6b26cca0fc53dae3c8560208083bef29123b229bb3a4d2b8ef15d779498ce4", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["27f3dea64"]], "identity_text": "Show the manual page URL in psql's \\help output for a SQL command (Peter Eisentraut)", "commit_aliases": ["27f3dea64"], "source_commits": ["27f3dea64"], "source_entry_id": "12.0/changes/121", "db_id": "748182c2f3bc206b41a34a3d9437807a", "patch_ids": ["5f462ad3b12e68e3100db2ffb561e67c"], "statement_hash": "94b722349271e93aa0b69d096e1db17f0bae6f98e50fafdb7249ae2d1cb1f17e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-99d7888a273df435", "migration": false}, {"id": "12.0-6fce592bfb6ba5f6", "cves": [], "html": "<p>\u5728 <span>psql</span> \u7684 <code>\\conninfo</code> \u4e2d\u663e\u793a <acronym>IP</acronym> \u5730\u5740\uff08Fabien Coelho\uff09<a href=\"https://postgr.es/c/6e5f8d489\">\u00a7</a> <a href=\"https://postgr.es/c/313f56ce2\">\u00a7</a></p>", "text": "\u5728 psql \u7684 \\conninfo \u4e2d\u663e\u793a IP \u5730\u5740\uff08Fabien Coelho\uff09\u00a7 \u00a7", "title": "\u5728 psql \u7684 \\conninfo \u4e2d\u663e\u793a IP \u5730\u5740", "commits": ["313f56ce2", "6e5f8d489"], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.3", "source_hash": "01ae29b63342ff29bfe8ec23a72c96c60ddadbd5e55370379bbbcff4953edaa8", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["313f56ce2"], ["6e5f8d489"]], "identity_text": "Display the IP address in psql's \\conninfo (Fabien Coelho)", "commit_aliases": ["313f56ce2", "6e5f8d489"], "source_commits": ["313f56ce2", "6e5f8d489"], "source_entry_id": "12.0/changes/122", "db_id": "c50b7ae393db2a3272143083fdff8c35", "patch_ids": ["bd1851698a553ebc11f199b9f61dbf6b", "f645ed74fe778d630421dd39a1f48f56"], "statement_hash": "b709b48d7f640ffb6c60382510a31c7ff4558a8b77b2d7f482d0a0acedbdbf73", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-6fce592bfb6ba5f6", "migration": false}, {"id": "12.0-07a8f9a76da71869", "cves": [], "html": "<p>\u6539\u8fdb <code>CREATE TABLE</code>\u3001<code>CREATE TRIGGER</code>\u3001<code>CREATE EVENT TRIGGER</code>\u3001<code>ANALYZE</code>\u3001<code>EXPLAIN</code>\u3001<code>VACUUM</code>\u3001<code>ALTER TABLE</code>\u3001<code>ALTER INDEX</code>\u3001<code>ALTER DATABASE</code> \u548c <code>ALTER INDEX ALTER COLUMN</code> \u7684 Tab \u8865\u5168\uff08Dagfinn Ilmari Manns\u00e5ker\uff0cTatsuro Yamada\uff0cMicha\u00ebl Paquier\uff0cTom Lane\uff0cJustin Pryzby\uff09<a href=\"https://postgr.es/c/11a60d496\">\u00a7</a> <a href=\"https://postgr.es/c/5953c9969\">\u00a7</a> <a href=\"https://postgr.es/c/292ef6e27\">\u00a7</a> <a href=\"https://postgr.es/c/23349b18d\">\u00a7</a> <a href=\"https://postgr.es/c/4cba9c2a3\">\u00a7</a> <a href=\"https://postgr.es/c/a7c4dad1a\">\u00a7</a> <a href=\"https://postgr.es/c/f89ae34ab\">\u00a7</a> <a href=\"https://postgr.es/c/c9a8a401f\">\u00a7</a> <a href=\"https://postgr.es/c/121213d9d\">\u00a7</a></p>", "text": "\u6539\u8fdb CREATE TABLE\u3001CREATE TRIGGER\u3001CREATE EVENT TRIGGER\u3001ANALYZE\u3001EXPLAIN\u3001VACUUM\u3001ALTER TABLE\u3001ALTER INDEX\u3001ALTER DATABASE \u548c ALTER INDEX ALTER COLUMN \u7684 Tab \u8865\u5168\uff08Dagfinn Ilmari Manns\u00e5ker\uff0cTatsuro Yamada\uff0cMicha\u00ebl Paquier\uff0cTom Lane\uff0cJustin Pryzby\uff09\u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7", "title": "\u6539\u8fdb CREATE TABLE\u3001CREATE TRIGGER\u3001CREATE EVENT TRIGGER\u3001ANALYZE\u3001EXPLAIN\u3001VACUUM\u3001ALTER TABLE\u3001ALTER INDEX\u3001ALTER DATABASE \u548c ALTER INDEX ALTER COLUMN \u7684 Tab \u8865\u5168", "commits": ["11a60d496", "121213d9d", "23349b18d", "292ef6e27", "4cba9c2a3", "5953c9969", "a7c4dad1a", "c9a8a401f", "f89ae34ab"], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / psql", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.3", "source_hash": "73e840dcddae67fe3ae8b2987fe46bb22745bc0f63978c3bb26777e9503e3b88", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "psql"], "commit_groups": [["11a60d496"], ["121213d9d"], ["23349b18d"], ["292ef6e27"], ["4cba9c2a3"], ["5953c9969"], ["a7c4dad1a"], ["c9a8a401f"], ["f89ae34ab"]], "identity_text": "Improve tab completion of CREATE TABLE, CREATE TRIGGER, CREATE EVENT TRIGGER, ANALYZE, EXPLAIN, VACUUM, ALTER TABLE, ALTER INDEX, ALTER DATABASE, and ALTER INDEX ALTER COLUMN (Dagfinn Ilmari Manns\u00e5ker, Tatsuro Yamada, Micha\u00ebl Paquier, Tom Lane, Justin Pryzby)", "commit_aliases": ["11a60d496", "121213d9d", "23349b18d", "292ef6e27", "4cba9c2a3", "5953c9969", "a7c4dad1a", "c9a8a401f", "f89ae34ab"], "source_commits": ["11a60d496", "121213d9d", "23349b18d", "292ef6e27", "4cba9c2a3", "5953c9969", "a7c4dad1a", "c9a8a401f", "f89ae34ab"], "source_entry_id": "12.0/changes/123", "db_id": "f81f1d1dbec6cf724be0e93dbdc95b6a", "patch_ids": ["05ff005f60d3a1b6def37392963fd376", "2836c84bd052938c175ab2725ec80113", "56d28cf7f0fc83d0a7f92a8d344cecc8", "63f13df32a97de8d8afd612c58afc46b", "842447e31821dddfcbbef69c76d2dbe6", "9c0246ca6d33a1a74deb76e4923149da", "a594e96b32f99e433e3227b0f2deea6c", "bd8a8ee62f527b677bca142113f5be36", "f8366dffd1179ceabb246ccd76950944"], "statement_hash": "1e200bf2e849ad40df92c554448fb1756c040b9839d3dcc30e5e54e9b7a96bd4", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-07a8f9a76da71869", "migration": false}, {"id": "12.0-ad8c8ea55c386949", "cves": [], "html": "<p>\u5141\u8bb8\u5c06\u67e5\u8be2\u4ea7\u751f\u7684\u503c\u8d4b\u7ed9 <span>pgbench</span> \u53d8\u91cf\uff08Fabien Coelho\uff0c\u00c1lvaro Herrera\uff09<a href=\"https://postgr.es/c/6260cc550\">\u00a7</a> <a href=\"https://postgr.es/c/25ee70511\">\u00a7</a></p>\n<p>\u76f8\u5e94\u547d\u4ee4\u4e3a <code>\\gset</code>\u3002</p>", "text": "\u5141\u8bb8\u5c06\u67e5\u8be2\u4ea7\u751f\u7684\u503c\u8d4b\u7ed9 pgbench \u53d8\u91cf\uff08Fabien Coelho\uff0c\u00c1lvaro Herrera\uff09\u00a7 \u00a7 \u76f8\u5e94\u547d\u4ee4\u4e3a \\gset\u3002", "title": "\u5141\u8bb8\u5c06\u67e5\u8be2\u4ea7\u751f\u7684\u503c\u8d4b\u7ed9 pgbench \u53d8\u91cf", "commits": ["25ee70511", "6260cc550"], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / pgbench", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.4", "source_hash": "93e9496f075a4d4a0c9a6781a0a886c869afc5773213e96f2316ab282a1d031c", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "pgbench"], "commit_groups": [["25ee70511"], ["6260cc550"]], "identity_text": "Allow values produced by queries to be assigned to pgbench variables (Fabien Coelho, \u00c1lvaro Herrera) The command for this is \\gset.", "commit_aliases": ["25ee70511", "6260cc550"], "source_commits": ["25ee70511", "6260cc550"], "source_entry_id": "12.0/changes/124", "db_id": "dc4f925525f7acc571105cc451504672", "patch_ids": ["9d16359b851147594286f341956b7d4a", "fdd8e9219e26ca3a112cf43cb9e3dbb7"], "statement_hash": "a6a83267f870e4edfa1dd95edb2920dca980f398d9c78afa8dc12edff830c1b9", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-ad8c8ea55c386949", "migration": false}, {"id": "12.0-de30571b92d47111", "cves": [], "html": "<p>\u63d0\u9ad8 <span>pgbench</span> \u7684 <code>--rate</code> \u9009\u9879\u7684\u7cbe\u5ea6\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/5b7e03670\">\u00a7</a></p>", "text": "\u63d0\u9ad8 pgbench \u7684 --rate \u9009\u9879\u7684\u7cbe\u5ea6\uff08Tom Lane\uff09\u00a7", "title": "\u63d0\u9ad8 pgbench \u7684 --rate \u9009\u9879\u7684\u7cbe\u5ea6", "commits": ["5b7e03670"], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / pgbench", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.4", "source_hash": "76615b00d95b7a95f9ad1ab90a2e8ae1148c86c04c13aa6ec3e9a7edd5b3ef86", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "pgbench"], "commit_groups": [["5b7e03670"]], "identity_text": "Improve precision of pgbench's --rate option (Tom Lane)", "commit_aliases": ["5b7e03670"], "source_commits": ["5b7e03670"], "source_entry_id": "12.0/changes/125", "db_id": "d30ad0852072cc530e5931b6db4dfbb1", "patch_ids": ["b47e21340ee28c0f9c02465ff95ed2fb"], "statement_hash": "5b52a69b3ca590af6bf44aaf9eb703177f9c3e757433bd0022a2958f555271d5", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-de30571b92d47111", "migration": false}, {"id": "12.0-7f3847df4645361f", "cves": [], "html": "<p>\u4ee5\u66f4\u6e05\u695a\u7684\u6d88\u606f\u548c\u8fd4\u56de\u7801\u6539\u8fdb <span>pgbench</span> \u7684\u9519\u8bef\u62a5\u544a\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/5b75a4f82\">\u00a7</a></p>", "text": "\u4ee5\u66f4\u6e05\u695a\u7684\u6d88\u606f\u548c\u8fd4\u56de\u7801\u6539\u8fdb pgbench \u7684\u9519\u8bef\u62a5\u544a\uff08Peter Eisentraut\uff09\u00a7", "title": "\u4ee5\u66f4\u6e05\u695a\u7684\u6d88\u606f\u548c\u8fd4\u56de\u7801\u6539\u8fdb pgbench \u7684\u9519\u8bef\u62a5\u544a", "commits": ["5b75a4f82"], "section": "\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f / pgbench", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.10.4", "source_hash": "70f56686a4d90fcbd387c0b3880333053689d2af5522739ca5dc24124a37be66", "section_path": ["\u5ba2\u6237\u7aef\u5e94\u7528\u7a0b\u5e8f", "pgbench"], "commit_groups": [["5b75a4f82"]], "identity_text": "Improve pgbench's error reporting with clearer messages and return codes (Peter Eisentraut)", "commit_aliases": ["5b75a4f82"], "source_commits": ["5b75a4f82"], "source_entry_id": "12.0/changes/126", "db_id": "b34967b756cb0050557488269791fb73", "patch_ids": ["f15f2a5462dc93102decd67620d93b82"], "statement_hash": "8a5912671f6656f5c93b8c47474b3f29dd960b34e21089514d916517445b6b27", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-7f3847df4645361f", "migration": false}, {"id": "12.0-92a1bc7e77c6da43", "cves": [], "html": "<p>\u5141\u8bb8\u901a\u8fc7<a href=\"/docs/12/app-pg-ctl.html\" title=\"pg_ctl\"><span><span>pg_ctl</span></span></a>\u63a7\u5236\u65e5\u5fd7\u6587\u4ef6\u8f6e\u8f6c\uff08Kyotaro Horiguchi\uff0cAlexander Kuzmenkov\uff0cAlexander Korotkov\uff09<a href=\"https://postgr.es/c/ec7436993\">\u00a7</a></p>\n<p>\u4ee5\u524d\uff0c\u53ea\u80fd\u901a\u8fc7 <acronym>SQL</acronym> \u51fd\u6570\u6216\u8fdb\u7a0b\u4fe1\u53f7\u6765\u5b8c\u6210\u6b64\u64cd\u4f5c\u3002</p>", "text": "\u5141\u8bb8\u901a\u8fc7pg_ctl\u63a7\u5236\u65e5\u5fd7\u6587\u4ef6\u8f6e\u8f6c\uff08Kyotaro Horiguchi\uff0cAlexander Kuzmenkov\uff0cAlexander Korotkov\uff09\u00a7 \u4ee5\u524d\uff0c\u53ea\u80fd\u901a\u8fc7 SQL \u51fd\u6570\u6216\u8fdb\u7a0b\u4fe1\u53f7\u6765\u5b8c\u6210\u6b64\u64cd\u4f5c\u3002", "title": "\u5141\u8bb8\u901a\u8fc7pg_ctl\u63a7\u5236\u65e5\u5fd7\u6587\u4ef6\u8f6e\u8f6c", "commits": ["ec7436993"], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "16669d62eb5a19dd4f555c3bc170e55b10d23bcc8bcc813489a55d510f7baf91", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["ec7436993"]], "identity_text": "Allow control of log file rotation via app-pg-ctl (Kyotaro Horiguchi, Alexander Kuzmenkov, Alexander Korotkov) Previously, this was only possible via an SQL function or a process signal.", "commit_aliases": ["ec7436993"], "source_commits": ["ec7436993"], "source_entry_id": "12.0/changes/127", "db_id": "934eb313c54cc14112284a154340e81b", "patch_ids": ["4a36c7ccf2387c3538e7c7b7e59c0cf6"], "statement_hash": "7776d576c40eb2c163768f6b7f865d6981cd0aa190cc209087685b4aa258d61b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-92a1bc7e77c6da43", "migration": false}, {"id": "12.0-d7c4c20eaf767454", "cves": [], "html": "<p>\u5728 <code><span>pg_ctl</span> start</code> \u671f\u95f4\u6b63\u786e\u5206\u79bb\u65b0\u670d\u52a1\u5668\u8fdb\u7a0b\uff08Paul Guo\uff09<a href=\"https://postgr.es/c/bb24439ce\">\u00a7</a></p>\n<p>\u8fd9\u53ef\u9632\u6b62\u8c03\u7528 <span>pg_ctl</span> \u7684 shell \u811a\u672c\u540e\u6765\u88ab\u4e2d\u65ad\u65f6\uff0c\u670d\u52a1\u5668\u968f\u4e4b\u5173\u95ed\u3002</p>", "text": "\u5728 pg_ctl start \u671f\u95f4\u6b63\u786e\u5206\u79bb\u65b0\u670d\u52a1\u5668\u8fdb\u7a0b\uff08Paul Guo\uff09\u00a7 \u8fd9\u53ef\u9632\u6b62\u8c03\u7528 pg_ctl \u7684 shell \u811a\u672c\u540e\u6765\u88ab\u4e2d\u65ad\u65f6\uff0c\u670d\u52a1\u5668\u968f\u4e4b\u5173\u95ed\u3002", "title": "\u5728 pg_ctl start \u671f\u95f4\u6b63\u786e\u5206\u79bb\u65b0\u670d\u52a1\u5668\u8fdb\u7a0b", "commits": ["bb24439ce"], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "869df87919811771d9d752021a5a11b17b77fbaaf27df4a6c2073f9437c3203c", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["bb24439ce"]], "identity_text": "Properly detach the new server process during pg_ctl start (Paul Guo) This prevents the server from being shut down if the shell script that invoked pg_ctl is interrupted later.", "commit_aliases": ["bb24439ce"], "source_commits": ["bb24439ce"], "source_entry_id": "12.0/changes/128", "db_id": "c07f4ba6408ddca19d410c753094fd7f", "patch_ids": ["8a62b8bfc3713ca19b23e7d6cddf422a"], "statement_hash": "ab6fe4f2414ccb534c7abc0b7af4ae89621d429c666251db515d814a7126dd2e", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d7c4c20eaf767454", "migration": false}, {"id": "12.0-3b47b162dcb26a4a", "cves": [], "html": "<p>\u5982\u679c\u6587\u4ef6\u7cfb\u7edf\u5177\u6709\u514b\u9686\u529f\u80fd\uff0c\u5219\u5141\u8bb8<a href=\"/docs/12/pgupgrade.html\" title=\"pg_upgrade\"><span><span>pg_upgrade</span></span></a>\u4f7f\u7528\u5b83\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/3a769d823\">\u00a7</a></p>\n<p><code>--clone</code> \u9009\u9879\u5177\u6709 <code>--link</code> \u7684\u4f18\u70b9\uff0c\u540c\u65f6\u53ef\u4ee5\u9632\u6b62\u65b0\u96c6\u7fa4\u542f\u52a8\u540e\u65e7\u96c6\u7fa4\u88ab\u6539\u52a8\u3002</p>", "text": "\u5982\u679c\u6587\u4ef6\u7cfb\u7edf\u5177\u6709\u514b\u9686\u529f\u80fd\uff0c\u5219\u5141\u8bb8pg_upgrade\u4f7f\u7528\u5b83\uff08Peter Eisentraut\uff09\u00a7 --clone \u9009\u9879\u5177\u6709 --link \u7684\u4f18\u70b9\uff0c\u540c\u65f6\u53ef\u4ee5\u9632\u6b62\u65b0\u96c6\u7fa4\u542f\u52a8\u540e\u65e7\u96c6\u7fa4\u88ab\u6539\u52a8\u3002", "title": "\u5982\u679c\u6587\u4ef6\u7cfb\u7edf\u5177\u6709\u514b\u9686\u529f\u80fd\uff0c\u5219\u5141\u8bb8pg_upgrade\u4f7f\u7528\u5b83", "commits": ["3a769d823"], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "276326f10b7d9eed9502ee8b01421bb03bec2bdd7812123d48f7e21f2422f2a0", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["3a769d823"]], "identity_text": "Allow pgupgrade to use the file system's cloning feature, if there is one (Peter Eisentraut) The --clone option has the advantages of --link, while preventing the old cluster from being changed after the new cluster has started.", "commit_aliases": ["3a769d823"], "source_commits": ["3a769d823"], "source_entry_id": "12.0/changes/129", "db_id": "95bcaccf47f3728a10321f1751df6cf9", "patch_ids": ["2838d496c71fa7b90b2512e71b4bc30d"], "statement_hash": "fcaeff4121e842ee75a074f361faed9f4e8eb4c25858c369526db01a1b6f5893", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-3b47b162dcb26a4a", "migration": false}, {"id": "12.0-e2777a4c38c60198", "cves": [], "html": "<p>\u5141\u8bb8\u6307\u5b9a <span>pg_upgrade</span> \u4f7f\u7528\u7684\u5957\u63a5\u5b57\u76ee\u5f55\uff08Daniel Gustafsson\uff09<a href=\"https://postgr.es/c/2d34ad843\">\u00a7</a></p>\n<p>\u8fd9\u901a\u8fc7 <code>--socketdir</code> \u63a7\u5236\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u76ee\u5f55\u3002</p>", "text": "\u5141\u8bb8\u6307\u5b9a pg_upgrade \u4f7f\u7528\u7684\u5957\u63a5\u5b57\u76ee\u5f55\uff08Daniel Gustafsson\uff09\u00a7 \u8fd9\u901a\u8fc7 --socketdir \u63a7\u5236\uff0c\u9ed8\u8ba4\u4e3a\u5f53\u524d\u76ee\u5f55\u3002", "title": "\u5141\u8bb8\u6307\u5b9a pg_upgrade \u4f7f\u7528\u7684\u5957\u63a5\u5b57\u76ee\u5f55", "commits": ["2d34ad843"], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "eaff4bf6127d1f23853fa26146562703107839b2420633e800de290e6430ba1a", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["2d34ad843"]], "identity_text": "Allow specification of the socket directory to use in pg_upgrade (Daniel Gustafsson) This is controlled by --socketdir; the default is the current directory.", "commit_aliases": ["2d34ad843"], "source_commits": ["2d34ad843"], "source_entry_id": "12.0/changes/130", "db_id": "62bb91896d9976a99367bf78aa4e40ca", "patch_ids": ["cc16d0452716049c9f5b46898765ef13"], "statement_hash": "1a492024862b7ef69469c497ceee23c7598bc5e522d515f92a40e8ffedcb1956", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-e2777a4c38c60198", "migration": false}, {"id": "12.0-abd72407d4d9c992", "cves": [], "html": "<p>\u5141\u8bb8<a href=\"/docs/12/app-pgchecksums.html\" title=\"pg_checksums\"><span><span>pg_checksums</span></span></a>\u7981\u7528 fsync \u64cd\u4f5c\uff08Micha\u00ebl Paquier\uff09<a href=\"https://postgr.es/c/e0090c869\">\u00a7</a></p>\n<p>\u8fd9\u901a\u8fc7 <code>--no-sync</code> \u9009\u9879\u63a7\u5236\u3002</p>", "text": "\u5141\u8bb8pg_checksums\u7981\u7528 fsync \u64cd\u4f5c\uff08Micha\u00ebl Paquier\uff09\u00a7 \u8fd9\u901a\u8fc7 --no-sync \u9009\u9879\u63a7\u5236\u3002", "title": "\u5141\u8bb8pg_checksums\u7981\u7528 fsync \u64cd\u4f5c", "commits": ["e0090c869"], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "1964db70ced9c40f3ed1959d3685826359e6ec662cf963bc52bf315ec744182f", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["e0090c869"]], "identity_text": "Allow app-pgchecksums to disable fsync operations (Micha\u00ebl Paquier) This is controlled by the --no-sync option.", "commit_aliases": ["e0090c869"], "source_commits": ["e0090c869"], "source_entry_id": "12.0/changes/131", "db_id": "6b62a649ee6c1d33f0397c6039e11bdd", "patch_ids": ["01d4059d7eb0c33a80dacfd34c4d721d"], "statement_hash": "b1e7a3f2387830c16802257756d8d5f881d2b41dce47722929ed3eb41871d3e1", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-abd72407d4d9c992", "migration": false}, {"id": "12.0-fe97b6b217da23fc", "cves": [], "html": "<p>\u5141\u8bb8<a href=\"/docs/12/app-pgrewind.html\" title=\"pg_rewind\"><span><span>pg_rewind</span></span></a>\u7981\u7528 fsync \u64cd\u4f5c\uff08Micha\u00ebl Paquier\uff09<a href=\"https://postgr.es/c/8a00b96aa\">\u00a7</a></p>", "text": "\u5141\u8bb8pg_rewind\u7981\u7528 fsync \u64cd\u4f5c\uff08Micha\u00ebl Paquier\uff09\u00a7", "title": "\u5141\u8bb8pg_rewind\u7981\u7528 fsync \u64cd\u4f5c", "commits": ["8a00b96aa"], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "dfb8f3f1d38d48d98444aaa4ca07f33696c208af07b97398ab2936333c8a0cf8", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["8a00b96aa"]], "identity_text": "Allow app-pgrewind to disable fsync operations (Micha\u00ebl Paquier)", "commit_aliases": ["8a00b96aa"], "source_commits": ["8a00b96aa"], "source_entry_id": "12.0/changes/132", "db_id": "1fe8a3d66d8a6cb9033efd97aa152e55", "patch_ids": ["235a28e7a91383eeabe77514336521e1"], "statement_hash": "77b62676357a372445263b021c8934b15694978bc72f6c972bce5d21dd9a6d8b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-fe97b6b217da23fc", "migration": false}, {"id": "12.0-05a84bd68e2c5215", "cves": [], "html": "<p>\u4fee\u590d<a href=\"/docs/12/pgtestfsync.html\" title=\"pg_test_fsync\"><span><span>pg_test_fsync</span></span></a>\uff0c\u4f7f\u5176\u5728 <span>Windows</span> \u4e0a\u62a5\u544a\u51c6\u786e\u7684 <code>open_datasync</code> \u8017\u65f6\uff08Laurenz Albe\uff09<a href=\"https://postgr.es/c/0ba06e0bf\">\u00a7</a> <a href=\"https://postgr.es/c/40cfe8606\">\u00a7</a></p>", "text": "\u4fee\u590dpg_test_fsync\uff0c\u4f7f\u5176\u5728 Windows \u4e0a\u62a5\u544a\u51c6\u786e\u7684 open_datasync \u8017\u65f6\uff08Laurenz Albe\uff09\u00a7 \u00a7", "title": "\u4fee\u590dpg_test_fsync\uff0c\u4f7f\u5176\u5728 Windows \u4e0a\u62a5\u544a\u51c6\u786e\u7684 open_datasync \u8017\u65f6", "commits": ["0ba06e0bf", "40cfe8606"], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "category": "bugfix", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11", "source_hash": "c60075fc37cead87d54a3b60812f1b45f1eb687bcf352e6eb9f15b88b51ae958", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f"], "commit_groups": [["0ba06e0bf"], ["40cfe8606"]], "identity_text": "Fix pgtestfsync to report accurate open_datasync durations on Windows (Laurenz Albe)", "commit_aliases": ["0ba06e0bf", "40cfe8606"], "source_commits": ["0ba06e0bf", "40cfe8606"], "source_entry_id": "12.0/changes/133", "db_id": "c1b538d638a5cdac6e56e9f8b867cd7b", "patch_ids": ["4e6816e84feba9b35aeafbed9a3f02fb", "fa00dcb8af1099cfe6a8cd14fdaa26ef"], "statement_hash": "d992ec52425da0f42f46239d33d9568d8e53ecf92e55a30df1484c8c85e3da78", "relations": [], "category_label": "BUG \u4fee\u590d", "url": "/docs/compare/?release=12.0#12.0-05a84bd68e2c5215", "migration": false}, {"id": "12.0-f2885d0aad849c1b", "cves": [], "html": "<p>\u5f53 <span>pg_dump</span> \u901a\u8fc7 <code>INSERT</code> \u547d\u4ee4\u800c\u975e <code>COPY</code> \u8f93\u51fa\u6570\u636e\u65f6\uff0c\u5141\u8bb8\u6bcf\u6761 <code>INSERT</code> \u5305\u542b\u591a\u884c\u6570\u636e\uff08Surafel Temesgen\uff0cDavid Rowley\uff09<a href=\"https://postgr.es/c/7e413a0f8\">\u00a7</a> <a href=\"https://postgr.es/c/a193cbec1\">\u00a7</a></p>\n<p>\u63a7\u5236\u6b64\u884c\u4e3a\u7684\u9009\u9879\u4e3a <code>--rows-per-insert</code>\u3002</p>", "text": "\u5f53 pg_dump \u901a\u8fc7 INSERT \u547d\u4ee4\u800c\u975e COPY \u8f93\u51fa\u6570\u636e\u65f6\uff0c\u5141\u8bb8\u6bcf\u6761 INSERT \u5305\u542b\u591a\u884c\u6570\u636e\uff08Surafel Temesgen\uff0cDavid Rowley\uff09\u00a7 \u00a7 \u63a7\u5236\u6b64\u884c\u4e3a\u7684\u9009\u9879\u4e3a --rows-per-insert\u3002", "title": "\u5f53 pg_dump \u901a\u8fc7 INSERT \u547d\u4ee4\u800c\u975e COPY \u8f93\u51fa\u6570\u636e\u65f6\uff0c\u5141\u8bb8\u6bcf\u6761 INSERT \u5305\u542b\u591a\u884c\u6570\u636e", "commits": ["7e413a0f8", "a193cbec1"], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f / pg_dump, pg_dumpall, pg_restore", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11.3", "source_hash": "bddaed7dd4631760de88e8c0765f3246b864f659a17324c730640a0a23166612", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "pg_dump, pg_dumpall, pg_restore"], "commit_groups": [["7e413a0f8"], ["a193cbec1"]], "identity_text": "When pg_dump emits data with INSERT commands rather than COPY, allow more than one data row to be included in each INSERT (Surafel Temesgen, David Rowley) The option controlling this is --rows-per-insert.", "commit_aliases": ["7e413a0f8", "a193cbec1"], "source_commits": ["7e413a0f8", "a193cbec1"], "source_entry_id": "12.0/changes/134", "db_id": "d22c827b523f44ed5057e29626b56800", "patch_ids": ["3a82893db255c96c4cd45cfe8eb133ac", "ddf11a95fb21da81802503a14e22f954"], "statement_hash": "6355a4d009e74b09dc6215b983a9ae75500f9879007e2bb0ddcbf106dfdebf84", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-f2885d0aad849c1b", "migration": false}, {"id": "12.0-d2e91be2ea1bf00e", "cves": [], "html": "<p>\u5141\u8bb8 <span>pg_dump</span> \u8f93\u51fa <code>INSERT ... ON CONFLICT DO NOTHING</code>\uff08Surafel Temesgen\uff09<a href=\"https://postgr.es/c/387a5cfb9\">\u00a7</a></p>\n<p>\u8fd9\u53ef\u907f\u514d\u6062\u590d\u671f\u95f4\u56e0\u51b2\u7a81\u800c\u5931\u8d25\u3002\u76f8\u5e94\u9009\u9879\u4e3a <code>--on-conflict-do-nothing</code>\u3002</p>", "text": "\u5141\u8bb8 pg_dump \u8f93\u51fa INSERT ... ON CONFLICT DO NOTHING\uff08Surafel Temesgen\uff09\u00a7 \u8fd9\u53ef\u907f\u514d\u6062\u590d\u671f\u95f4\u56e0\u51b2\u7a81\u800c\u5931\u8d25\u3002\u76f8\u5e94\u9009\u9879\u4e3a --on-conflict-do-nothing\u3002", "title": "\u5141\u8bb8 pg_dump \u8f93\u51fa INSERT ... ON CONFLICT DO NOTHING", "commits": ["387a5cfb9"], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f / pg_dump, pg_dumpall, pg_restore", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11.3", "source_hash": "b3548f311416335c81db0d4690f872fc09d9a0050d44bb3c3a30edfd79e55bcd", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "pg_dump, pg_dumpall, pg_restore"], "commit_groups": [["387a5cfb9"]], "identity_text": "Allow pg_dump to emit INSERT ... ON CONFLICT DO NOTHING (Surafel Temesgen) This avoids conflict failures during restore. The option is --on-conflict-do-nothing.", "commit_aliases": ["387a5cfb9"], "source_commits": ["387a5cfb9"], "source_entry_id": "12.0/changes/135", "db_id": "d37b0fdf1bb1c08d01ab8971f67da31e", "patch_ids": ["7571a466935fac482f3c62a6d1fefdd4"], "statement_hash": "f12d1c2dc939b07ad7e0a8a690632d5cec2b2282bc82ef01fc016421441eff20", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d2e91be2ea1bf00e", "migration": false}, {"id": "12.0-dbabdb0ce559a893", "cves": [], "html": "<p>\u5c06\u5e76\u884c <span>pg_dump</span> \u7684\u64cd\u4f5c\u987a\u5e8f\u4e0e\u540e\u7eed\u5e76\u884c <span>pg_restore</span> \u4f7f\u7528\u7684\u987a\u5e8f\u89e3\u8026\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/548e50976\">\u00a7</a></p>\n<p>\u8fd9\u4f7f <span>pg_restore</span> \u80fd\u591f\u4ee5\u66f4\u5145\u5206\u7684\u5e76\u884c\u5ea6\u6267\u884c\u6062\u590d\uff0c\u5c24\u5176\u662f\u5728\u539f\u59cb\u8f6c\u50a8\u672a\u5e76\u884c\u6267\u884c\u7684\u60c5\u51b5\u4e0b\u3002\u5e76\u884c <span>pg_dump</span> \u7684\u8c03\u5ea6\u4e5f\u6709\u6240\u6539\u8fdb\u3002</p>", "text": "\u5c06\u5e76\u884c pg_dump \u7684\u64cd\u4f5c\u987a\u5e8f\u4e0e\u540e\u7eed\u5e76\u884c pg_restore \u4f7f\u7528\u7684\u987a\u5e8f\u89e3\u8026\uff08Tom Lane\uff09\u00a7 \u8fd9\u4f7f pg_restore \u80fd\u591f\u4ee5\u66f4\u5145\u5206\u7684\u5e76\u884c\u5ea6\u6267\u884c\u6062\u590d\uff0c\u5c24\u5176\u662f\u5728\u539f\u59cb\u8f6c\u50a8\u672a\u5e76\u884c\u6267\u884c\u7684\u60c5\u51b5\u4e0b\u3002\u5e76\u884c pg_dump \u7684\u8c03\u5ea6\u4e5f\u6709\u6240\u6539\u8fdb\u3002", "title": "\u5c06\u5e76\u884c pg_dump \u7684\u64cd\u4f5c\u987a\u5e8f\u4e0e\u540e\u7eed\u5e76\u884c pg_restore \u4f7f\u7528\u7684\u987a\u5e8f\u89e3\u8026", "commits": ["548e50976"], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f / pg_dump, pg_dumpall, pg_restore", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11.3", "source_hash": "b778609f6a2763e9f4475773b79adc41cc02a954ecfc61c1caef41eed4584187", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "pg_dump, pg_dumpall, pg_restore"], "commit_groups": [["548e50976"]], "identity_text": "Decouple the order of operations in a parallel pg_dump from the order used by a subsequent parallel pg_restore (Tom Lane) This allows pg_restore to perform more-fully-parallelized parallel restores, especially in cases where the original dump was not done in parallel. Scheduling of a parallel pg_dump is also somewhat improved.", "commit_aliases": ["548e50976"], "source_commits": ["548e50976"], "source_entry_id": "12.0/changes/136", "db_id": "9ac2dd2d83983b11edb9741383f6d5a7", "patch_ids": ["2b44a3d19f343e081b49ab63e384aea9"], "statement_hash": "a271a2007dd879d7cba68b6cb44aefa78c027117dc7857af268d051c02a071af", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-dbabdb0ce559a893", "migration": false}, {"id": "12.0-5d8c01360cebe681", "cves": [], "html": "<p>\u5141\u8bb8\u4e3a <span>pg_dump</span> \u548c <span>pg_dumpall</span> \u6307\u5b9a<a href=\"/docs/12/runtime-config-client.html#GUC-EXTRA-FLOAT-DIGITS\">extra_float_digits</a>\u8bbe\u7f6e\uff08Andrew Dunstan\uff09<a href=\"https://postgr.es/c/af25bc03e\">\u00a7</a></p>\n<p>\u8fd9\u4e3b\u8981\u7528\u4e8e\u751f\u6210\u80fd\u591f\u5728\u4e0d\u540c\u6e90\u670d\u52a1\u5668\u7248\u672c\u4e4b\u95f4\u7cbe\u786e\u6bd4\u8f83\u7684\u8f6c\u50a8\u3002\u4e0d\u5efa\u8bae\u5728\u5e38\u89c4\u4f7f\u7528\u4e2d\u8fd9\u6837\u505a\uff0c\u56e0\u4e3a\u6062\u590d\u8f6c\u50a8\u65f6\u53ef\u80fd\u4e22\u5931\u7cbe\u5ea6\u3002</p>", "text": "\u5141\u8bb8\u4e3a pg_dump \u548c pg_dumpall \u6307\u5b9aextra_float_digits\u8bbe\u7f6e\uff08Andrew Dunstan\uff09\u00a7 \u8fd9\u4e3b\u8981\u7528\u4e8e\u751f\u6210\u80fd\u591f\u5728\u4e0d\u540c\u6e90\u670d\u52a1\u5668\u7248\u672c\u4e4b\u95f4\u7cbe\u786e\u6bd4\u8f83\u7684\u8f6c\u50a8\u3002\u4e0d\u5efa\u8bae\u5728\u5e38\u89c4\u4f7f\u7528\u4e2d\u8fd9\u6837\u505a\uff0c\u56e0\u4e3a\u6062\u590d\u8f6c\u50a8\u65f6\u53ef\u80fd\u4e22\u5931\u7cbe\u5ea6\u3002", "title": "\u5141\u8bb8\u4e3a pg_dump \u548c pg_dumpall \u6307\u5b9aextra_float_digits\u8bbe\u7f6e", "commits": ["af25bc03e"], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f / pg_dump, pg_dumpall, pg_restore", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11.3", "source_hash": "e87a673e94faf5b17ec71709151920ef5d697d0b927230ebe35ee4be1b2b9311", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "pg_dump, pg_dumpall, pg_restore"], "commit_groups": [["af25bc03e"]], "identity_text": "Allow the guc-extra-float-digits setting to be specified for pg_dump and pg_dumpall (Andrew Dunstan) This is primarily useful for making dumps that are exactly comparable across different source server versions. It is not recommended for normal use, as it may result in loss of precision when the dump is restored.", "commit_aliases": ["af25bc03e"], "source_commits": ["af25bc03e"], "source_entry_id": "12.0/changes/137", "db_id": "95be938be35e54680ff3d63ac6955603", "patch_ids": ["655515ce83eaa999f57ae43f6863da7e"], "statement_hash": "3dbfd51c5a2c8e5b36cc76ebf5a33cd809201df0ba25fdcb2e368de839443455", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-5d8c01360cebe681", "migration": false}, {"id": "12.0-21f197faa185c4a9", "cves": [], "html": "<p>\u4e3a <span>pg_dumpall</span> \u6dfb\u52a0 <code>--exclude-database</code> \u9009\u9879\uff08Andrew Dunstan\uff09<a href=\"https://postgr.es/c/f092de050\">\u00a7</a></p>", "text": "\u4e3a pg_dumpall \u6dfb\u52a0 --exclude-database \u9009\u9879\uff08Andrew Dunstan\uff09\u00a7", "title": "\u4e3a pg_dumpall \u6dfb\u52a0 --exclude-database \u9009\u9879", "commits": ["f092de050"], "section": "\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f / pg_dump, pg_dumpall, pg_restore", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.11.3", "source_hash": "e30d5d3275f31b7098ab0e90b881cff02ef08a1a4eb1d0288926f917846ed668", "section_path": ["\u670d\u52a1\u5668\u5e94\u7528\u7a0b\u5e8f", "pg_dump, pg_dumpall, pg_restore"], "commit_groups": [["f092de050"]], "identity_text": "Add --exclude-database option to pg_dumpall (Andrew Dunstan)", "commit_aliases": ["f092de050"], "source_commits": ["f092de050"], "source_entry_id": "12.0/changes/138", "db_id": "22456e3a76838cd7ec63b1570bab8334", "patch_ids": ["d6712f28971459dc993954699d4b98bf"], "statement_hash": "9035410880dcd0aa6c2e7d4be078665a03d36474a7010180a607cfc0d82b2124", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-21f197faa185c4a9", "migration": false}, {"id": "12.0-d2bded59bfab02ad", "cves": [], "html": "<p>\u6dfb\u52a0<a href=\"/docs/12/sql-create-access-method.html\" title=\"CREATE ACCESS METHOD\"><span>CREATE ACCESS METHOD</span></a>\u547d\u4ee4\uff0c\u7528\u4e8e\u521b\u5efa\u65b0\u7684\u8868\u7c7b\u578b\uff08Andres Freund\uff0cHaribabu Kommi\uff0c\u00c1lvaro Herrera\uff0cAlexander Korotkov\uff0cDmitry Dolgov\uff09<a href=\"https://postgr.es/c/4da597edf\">\u00a7</a> <a href=\"https://postgr.es/c/8586bf7ed\">\u00a7</a> <a href=\"https://postgr.es/c/3b925e905\">\u00a7</a> <a href=\"https://postgr.es/c/c2fe139c2\">\u00a7</a> <a href=\"https://postgr.es/c/5db6df0c0\">\u00a7</a> <a href=\"https://postgr.es/c/d25f51910\">\u00a7</a> <a href=\"https://postgr.es/c/d3a5fc17e\">\u00a7</a> <a href=\"https://postgr.es/c/73c954d24\">\u00a7</a> <a href=\"https://postgr.es/c/bfbcad478\">\u00a7</a></p>\n<p>\u8fd9\u4f7f\u5f00\u53d1\u65b0\u7684<a href=\"/docs/12/tableam.html\" title=\"\u7b2c\u00a060\u00a0\u7ae0\u00a0\u8868\u8bbf\u95ee\u65b9\u6cd5\u63a5\u53e3\u5b9a\u4e49\">\u8868\u8bbf\u95ee\u65b9\u6cd5</a>\u6210\u4e3a\u53ef\u80fd\uff0c\u4ece\u800c\u4e3a\u4e0d\u540c\u4f7f\u7528\u573a\u666f\u4f18\u5316\u5b58\u50a8\u3002\u73b0\u6709\u7684 <code>heap</code> \u8bbf\u95ee\u65b9\u6cd5\u4ecd\u662f\u9ed8\u8ba4\u9009\u9879\u3002</p>", "text": "\u6dfb\u52a0CREATE ACCESS METHOD\u547d\u4ee4\uff0c\u7528\u4e8e\u521b\u5efa\u65b0\u7684\u8868\u7c7b\u578b\uff08Andres Freund\uff0cHaribabu Kommi\uff0c\u00c1lvaro Herrera\uff0cAlexander Korotkov\uff0cDmitry Dolgov\uff09\u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u00a7 \u8fd9\u4f7f\u5f00\u53d1\u65b0\u7684\u8868\u8bbf\u95ee\u65b9\u6cd5\u6210\u4e3a\u53ef\u80fd\uff0c\u4ece\u800c\u4e3a\u4e0d\u540c\u4f7f\u7528\u573a\u666f\u4f18\u5316\u5b58\u50a8\u3002\u73b0\u6709\u7684 heap \u8bbf\u95ee\u65b9\u6cd5\u4ecd\u662f\u9ed8\u8ba4\u9009\u9879\u3002", "title": "\u6dfb\u52a0CREATE ACCESS METHOD\u547d\u4ee4\uff0c\u7528\u4e8e\u521b\u5efa\u65b0\u7684\u8868\u7c7b\u578b", "commits": ["3b925e905", "4da597edf", "5db6df0c0", "73c954d24", "8586bf7ed", "bfbcad478", "c2fe139c2", "d25f51910", "d3a5fc17e"], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "c3dc92898446f8d716c453f95e50b8d73ba0955bf98451158b5247585052a81f", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["3b925e905"], ["4da597edf"], ["5db6df0c0"], ["73c954d24"], ["8586bf7ed"], ["bfbcad478"], ["c2fe139c2"], ["d25f51910"], ["d3a5fc17e"]], "identity_text": "Add sql-create-access-method command to create new table types (Andres Freund, Haribabu Kommi, \u00c1lvaro Herrera, Alexander Korotkov, Dmitry Dolgov) This enables the development of new table access methods, which can optimize storage for different use cases. The existing heap access method remains the default.", "commit_aliases": ["3b925e905", "4da597edf", "5db6df0c0", "73c954d24", "8586bf7ed", "bfbcad478", "c2fe139c2", "d25f51910", "d3a5fc17e"], "source_commits": ["3b925e905", "4da597edf", "5db6df0c0", "73c954d24", "8586bf7ed", "bfbcad478", "c2fe139c2", "d25f51910", "d3a5fc17e"], "source_entry_id": "12.0/changes/139", "db_id": "e515e5370fa67143688d869434788a23", "patch_ids": ["0882f271d573ed97eb84984dc0b91280", "204573aa84b9df458fd84e2ca41308f8", "4b5d017f4f01e2a8515d1b7c86c94aad", "631e3410d937920e84f899f10b123a6b", "828c34029e60e731417e7a4016f9eeb4", "8a7f98ae3cc98b4694d9249d6bd9e0f1", "994461ca4c74603340eb987a4c064457", "adfa745762d26f2d2ef8abc3f60bffa4", "fb590b79dacf00560aa4b792ff9ca38c"], "statement_hash": "1fa8f711dac0788a9d7fd020aedae9cea3af2e2c7194be43f17e16a72519f893", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d2bded59bfab02ad", "migration": false}, {"id": "12.0-e911f29920bc15d4", "cves": [], "html": "<p>\u6dfb\u52a0<a href=\"/docs/12/xfunc-optimization.html\" title=\"37.11.\u00a0\u51fd\u6570\u4f18\u5316\u4fe1\u606f\">\u89c4\u5212\u5668\u652f\u6301\u51fd\u6570</a>\u63a5\u53e3\uff0c\u4ee5\u6539\u8fdb\u4f18\u5316\u5668\u5bf9\u51fd\u6570\u7684\u4f30\u7b97\u3001\u5185\u8054\u548c\u7d22\u5f15\u4f7f\u7528\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/1fb57af92\">\u00a7</a> <a href=\"https://postgr.es/c/a391ff3c3\">\u00a7</a> <a href=\"https://postgr.es/c/74dfe58a5\">\u00a7</a></p>\n<p>\u8fd9\u5141\u8bb8\u6269\u5c55\u521b\u5efa\u89c4\u5212\u5668\u652f\u6301\u51fd\u6570\uff0c\u63d0\u4f9b\u9488\u5bf9\u7279\u5b9a\u51fd\u6570\u7684\u9009\u62e9\u7387\u3001\u4ee3\u4ef7\u548c\u884c\u6570\u4f30\u7b97\uff0c\u8fd9\u4e9b\u4f30\u7b97\u53ef\u4ee5\u4f9d\u8d56\u51fd\u6570\u53c2\u6570\u3002\u652f\u6301\u51fd\u6570\u8fd8\u53ef\u4ee5\u63d0\u4f9b\u7b80\u5316\u7684\u8868\u793a\u548c\u7d22\u5f15\u6761\u4ef6\uff0c\u5927\u5e45\u6269\u5c55\u4f18\u5316\u7684\u53ef\u80fd\u6027\u3002</p>", "text": "\u6dfb\u52a0\u89c4\u5212\u5668\u652f\u6301\u51fd\u6570\u63a5\u53e3\uff0c\u4ee5\u6539\u8fdb\u4f18\u5316\u5668\u5bf9\u51fd\u6570\u7684\u4f30\u7b97\u3001\u5185\u8054\u548c\u7d22\u5f15\u4f7f\u7528\uff08Tom Lane\uff09\u00a7 \u00a7 \u00a7 \u8fd9\u5141\u8bb8\u6269\u5c55\u521b\u5efa\u89c4\u5212\u5668\u652f\u6301\u51fd\u6570\uff0c\u63d0\u4f9b\u9488\u5bf9\u7279\u5b9a\u51fd\u6570\u7684\u9009\u62e9\u7387\u3001\u4ee3\u4ef7\u548c\u884c\u6570\u4f30\u7b97\uff0c\u8fd9\u4e9b\u4f30\u7b97\u53ef\u4ee5\u4f9d\u8d56\u51fd\u6570\u53c2\u6570\u3002\u652f\u6301\u51fd\u6570\u8fd8\u53ef\u4ee5\u63d0\u4f9b\u7b80\u5316\u7684\u8868\u793a\u548c\u7d22\u5f15\u6761\u4ef6\uff0c\u5927\u5e45\u6269\u5c55\u4f18\u5316\u7684\u53ef\u80fd\u6027\u3002", "title": "\u6dfb\u52a0\u89c4\u5212\u5668\u652f\u6301\u51fd\u6570\u63a5\u53e3\uff0c\u4ee5\u6539\u8fdb\u4f18\u5316\u5668\u5bf9\u51fd\u6570\u7684\u4f30\u7b97\u3001\u5185\u8054\u548c\u7d22\u5f15\u4f7f\u7528", "commits": ["1fb57af92", "74dfe58a5", "a391ff3c3"], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "2fec88a66bdd20182d8857c17d339c0e810461d03c31f0b1cd0cd7d0a2dd20b9", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["1fb57af92"], ["74dfe58a5"], ["a391ff3c3"]], "identity_text": "Add planner support function interfaces to improve optimizer estimates, inlining, and indexing for functions (Tom Lane) This allows extensions to create planner support functions that can provide function-specific selectivity, cost, and row-count estimates that can depend on the function's arguments. Support functions can also supply simplified representations and index conditions, greatly expanding optimization possibilities.", "commit_aliases": ["1fb57af92", "74dfe58a5", "a391ff3c3"], "source_commits": ["1fb57af92", "74dfe58a5", "a391ff3c3"], "source_entry_id": "12.0/changes/140", "db_id": "852c2d9e0d22e1bfd695c303d812de98", "patch_ids": ["1eb34fc8eefc88301b430b0045e2baf2", "8bf46bad1becda768f3b1bcd39fec488", "beb0d0ab33e958d1b78c5b778cd98c9c"], "statement_hash": "978e917a3371935361250c11d7ef60692499766b0f17810b7c150afc1c7472e2", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-e911f29920bc15d4", "migration": false}, {"id": "12.0-c562dc47a6ada0b5", "cves": [], "html": "<p>\u7b80\u5316\u624b\u52a8\u5206\u914d\u7684 OID \u7684\u91cd\u65b0\u7f16\u53f7\uff0c\u5e76\u4e3a\u6b64\u7c7b OID \u7684\u7ba1\u7406\u5236\u5b9a\u65b0\u7684\u9879\u76ee\u653f\u7b56\uff08John Naylor\uff0cTom Lane\uff09<a href=\"https://postgr.es/c/a6417078c\">\u00a7</a> <a href=\"https://postgr.es/c/3aa0395d4\">\u00a7</a></p>\n<p>\u4e3a\u65b0\u7684\u5185\u7f6e\u5bf9\u8c61\uff08\u5982\u65b0\u51fd\u6570\uff09\u624b\u52a8\u5206\u914d OID \u7684\u8865\u4e01\uff0c\u73b0\u5728\u5e94\u5728 8000\u20149999 \u8303\u56f4\u5185\u968f\u673a\u9009\u62e9 OID\u3002\u5728\u5f00\u53d1\u5468\u671f\u7ed3\u675f\u65f6\uff0c\u5df2\u63d0\u4ea4\u8865\u4e01\u4f7f\u7528\u7684 OID \u5c06\u901a\u8fc7\u65b0\u7684 <a href=\"/docs/12/system-catalog-initial-data.html#SYSTEM-CATALOG-OID-ASSIGNMENT\" title=\"70.2.2.\u00a0OID \u5206\u914d\"><code>renumber_oids.pl</code></a> \u811a\u672c\u91cd\u65b0\u7f16\u53f7\u4e3a\u8f83\u5c0f\u7684\u6570\u5b57\uff0c\u76ee\u524d\u5927\u7ea6\u4f4d\u4e8e 4<em><code>xxx</code></em> \u8303\u56f4\u5185\u3002\u8fd9\u79cd\u505a\u6cd5\u5e94\u80fd\u5927\u5e45\u964d\u4f4e\u4e0d\u540c\u5f00\u53d1\u4e2d\u8865\u4e01\u4e4b\u95f4\u53d1\u751f OID \u51b2\u7a81\u7684\u6982\u7387\u3002</p>\n<p>\u867d\u7136\u6ca1\u6709\u4e13\u95e8\u4e3a\u5916\u90e8\u4f7f\u7528\u9884\u7559 OID \u7684\u653f\u7b56\uff0c\u4f46\u5efa\u8bae\u5206\u652f\u9879\u76ee\u53ca\u5176\u4ed6\u9700\u8981\u79c1\u6709\u624b\u52a8\u5206\u914d OID \u7684\u9879\u76ee\uff0c\u4f7f\u7528 7<em><code>xxx</code></em> \u8303\u56f4\u9ad8\u7aef\u7684\u7f16\u53f7\u3002\u8fd9\u5c06\u907f\u514d\u4e0e\u6700\u8fd1\u5408\u5165\u7684\u8865\u4e01\u51b2\u7a81\uff0c\u800c\u4e14\u6838\u5fc3\u9879\u76ee\u5e94\u8be5\u8981\u5f88\u4e45\u624d\u4f1a\u7528\u5230\u8be5\u8303\u56f4\u3002</p>", "text": "\u7b80\u5316\u624b\u52a8\u5206\u914d\u7684 OID \u7684\u91cd\u65b0\u7f16\u53f7\uff0c\u5e76\u4e3a\u6b64\u7c7b OID \u7684\u7ba1\u7406\u5236\u5b9a\u65b0\u7684\u9879\u76ee\u653f\u7b56\uff08John Naylor\uff0cTom Lane\uff09\u00a7 \u00a7 \u4e3a\u65b0\u7684\u5185\u7f6e\u5bf9\u8c61\uff08\u5982\u65b0\u51fd\u6570\uff09\u624b\u52a8\u5206\u914d OID \u7684\u8865\u4e01\uff0c\u73b0\u5728\u5e94\u5728 8000\u20149999 \u8303\u56f4\u5185\u968f\u673a\u9009\u62e9 OID\u3002\u5728\u5f00\u53d1\u5468\u671f\u7ed3\u675f\u65f6\uff0c\u5df2\u63d0\u4ea4\u8865\u4e01\u4f7f\u7528\u7684 OID \u5c06\u901a\u8fc7\u65b0\u7684 renumber_oids.pl \u811a\u672c\u91cd\u65b0\u7f16\u53f7\u4e3a\u8f83\u5c0f\u7684\u6570\u5b57\uff0c\u76ee\u524d\u5927\u7ea6\u4f4d\u4e8e 4xxx \u8303\u56f4\u5185\u3002\u8fd9\u79cd\u505a\u6cd5\u5e94\u80fd\u5927\u5e45\u964d\u4f4e\u4e0d\u540c\u5f00\u53d1\u4e2d\u8865\u4e01\u4e4b\u95f4\u53d1\u751f OID \u51b2\u7a81\u7684\u6982\u7387\u3002 \u867d\u7136\u6ca1\u6709\u4e13\u95e8\u4e3a\u5916\u90e8\u4f7f\u7528\u9884\u7559 OID \u7684\u653f\u7b56\uff0c\u4f46\u5efa\u8bae\u5206\u652f\u9879\u76ee\u53ca\u5176\u4ed6\u9700\u8981\u79c1\u6709\u624b\u52a8\u5206\u914d OID \u7684\u9879\u76ee\uff0c\u4f7f\u7528 7xxx \u8303\u56f4\u9ad8\u7aef\u7684\u7f16\u53f7\u3002\u8fd9\u5c06\u907f\u514d\u4e0e\u6700\u8fd1\u5408\u5165\u7684\u8865\u4e01\u51b2\u7a81\uff0c\u800c\u4e14\u6838\u5fc3\u9879\u76ee\u5e94\u8be5\u8981\u5f88\u4e45\u624d\u4f1a\u7528\u5230\u8be5\u8303\u56f4\u3002", "title": "\u7b80\u5316\u624b\u52a8\u5206\u914d\u7684 OID \u7684\u91cd\u65b0\u7f16\u53f7\uff0c\u5e76\u4e3a\u6b64\u7c7b OID \u7684\u7ba1\u7406\u5236\u5b9a\u65b0\u7684\u9879\u76ee\u653f\u7b56", "commits": ["3aa0395d4", "a6417078c"], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "ec9cf40c7a8fd08cc37604cbe6018d54feb0859e158878d1cca525380ece4ff1", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["3aa0395d4"], ["a6417078c"]], "identity_text": "Simplify renumbering manually-assigned OIDs, and establish a new project policy for management of such OIDs (John Naylor, Tom Lane) Patches that manually assign OIDs for new built-in objects (such as new functions) should now randomly choose OIDs in the range 8000\u20149999. At the end of a development cycle, the OIDs used by committed patches will be renumbered down to lower numbers, currently somewhere in the 4xxx range, using the new renumber_oids.pl script. This approach should greatly reduce the odds of OID collisions between different in-process patches. While there is no specific policy reserving any OIDs for external use, it is recommended that forks and other projects needing private manually-assigned OIDs use numbers in the high 7xxx range. This will avoid conflicts with recently-merged patches, and it should be a long time before the core project reaches that range.", "commit_aliases": ["3aa0395d4", "a6417078c"], "source_commits": ["3aa0395d4", "a6417078c"], "source_entry_id": "12.0/changes/141", "db_id": "499b34b5ac0903313c04e8135a2fddbd", "patch_ids": ["1300de1624269fb9a976a2c830530cd0", "a8b22c19bd0c3df78707b5429759528c"], "statement_hash": "9abd8693857275534f1a3d26ce9464c1067b61d9ccc85e610f922e5a35233982", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-c562dc47a6ada0b5", "migration": false}, {"id": "12.0-f3925751a3aa1538", "cves": [], "html": "<p>\u4f7f\u7528\u52a8\u6001\u5e93\u800c\u975e\u9759\u6001\u5e93\u6784\u5efa <span>Cygwin</span> \u4e8c\u8fdb\u5236\u6587\u4ef6\uff08Marco Atzeri\uff09<a href=\"https://postgr.es/c/a33245a85\">\u00a7</a></p>", "text": "\u4f7f\u7528\u52a8\u6001\u5e93\u800c\u975e\u9759\u6001\u5e93\u6784\u5efa Cygwin \u4e8c\u8fdb\u5236\u6587\u4ef6\uff08Marco Atzeri\uff09\u00a7", "title": "\u4f7f\u7528\u52a8\u6001\u5e93\u800c\u975e\u9759\u6001\u5e93\u6784\u5efa Cygwin \u4e8c\u8fdb\u5236\u6587\u4ef6", "commits": ["a33245a85"], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "99a462b66670e9162f8c73812e6ed8c656020864d76be3acdb3c9ab15f243672", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["a33245a85"]], "identity_text": "Build Cygwin binaries using dynamic instead of static libraries (Marco Atzeri)", "commit_aliases": ["a33245a85"], "source_commits": ["a33245a85"], "source_entry_id": "12.0/changes/142", "db_id": "20a353f28edeb7257874c5db1e742db7", "patch_ids": ["eea6b33f6e0dc696b10101d55394ebca"], "statement_hash": "d14cdfc217efb96fb24258ce765d40fad38139b8d6b9ac317e02f2c296a44582", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-f3925751a3aa1538", "migration": false}, {"id": "12.0-d3f8a997308cd156", "cves": [], "html": "<p>\u79fb\u9664 <span>configure</span> \u5f00\u5173 <code>--disable-strong-random</code>\uff08Micha\u00ebl Paquier\uff09<a href=\"https://postgr.es/c/1707a0d2a\">\u00a7</a></p>\n<p>\u73b0\u5728\u5fc5\u987b\u6709\u5f3a\u968f\u673a\u6570\u6e90\u3002</p>", "text": "\u79fb\u9664 configure \u5f00\u5173 --disable-strong-random\uff08Micha\u00ebl Paquier\uff09\u00a7 \u73b0\u5728\u5fc5\u987b\u6709\u5f3a\u968f\u673a\u6570\u6e90\u3002", "title": "\u79fb\u9664 configure \u5f00\u5173 --disable-strong-random", "commits": ["1707a0d2a"], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "d09c0da117ffce1bcfb621caf531a324c91a4a5581d39f158ae5bf353cea40e5", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["1707a0d2a"]], "identity_text": "Remove configure switch --disable-strong-random (Micha\u00ebl Paquier) A strong random-number source is now required.", "commit_aliases": ["1707a0d2a"], "source_commits": ["1707a0d2a"], "source_entry_id": "12.0/changes/143", "db_id": "b535a7440b1204745b0f1abe95eccc8b", "patch_ids": ["17ce59fac67f817920814a79409a8fc7"], "statement_hash": "b37340a826eca7e80380e0764f9da44a647b5171d9130756840887a924bbd337", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d3f8a997308cd156", "migration": false}, {"id": "12.0-fef65908aa64c686", "cves": [], "html": "<p>\u5728 Postgres \u4ee3\u7801\u4e2d\uff0c<code>printf</code> \u7cfb\u5217\u51fd\u6570\u4ee5\u53ca <code>strerror</code> \u548c <code>strerror_r</code> \u73b0\u5728\u5728\u5404\u5e73\u53f0\u4e0a\u884c\u4e3a\u4e00\u81f4\uff08Tom Lane\uff09<a href=\"https://postgr.es/c/96bf88d52\">\u00a7</a> <a href=\"https://postgr.es/c/26e9d4d4e\">\u00a7</a> <a href=\"https://postgr.es/c/758ce9b77\">\u00a7</a> <a href=\"https://postgr.es/c/d6c55de1f\">\u00a7</a></p>\n<p>\u7279\u522b\u662f\uff0c<code>printf</code> \u5728\u6240\u6709\u5e73\u53f0\u4e0a\u90fd\u80fd\u7406\u89e3 <code>%m</code>\uff1b\u5728 Windows \u4e0a\uff0c<code>strerror</code> \u80fd\u591f\u5904\u7406 Winsock \u9519\u8bef\u7801\uff08\u4ee5\u524d\u4ec5\u5728\u540e\u7aef\u4ee3\u7801\u4e2d\u652f\u6301\uff0c\u524d\u7aef\u4ee3\u7801\u4e0d\u652f\u6301\uff09\uff1b<code>strerror_r</code> \u5219\u59cb\u7ec8\u9075\u5faa GNU \u7684\u8fd4\u56de\u7ea6\u5b9a\u3002</p>", "text": "\u5728 Postgres \u4ee3\u7801\u4e2d\uff0cprintf \u7cfb\u5217\u51fd\u6570\u4ee5\u53ca strerror \u548c strerror_r \u73b0\u5728\u5728\u5404\u5e73\u53f0\u4e0a\u884c\u4e3a\u4e00\u81f4\uff08Tom Lane\uff09\u00a7 \u00a7 \u00a7 \u00a7 \u7279\u522b\u662f\uff0cprintf \u5728\u6240\u6709\u5e73\u53f0\u4e0a\u90fd\u80fd\u7406\u89e3 %m\uff1b\u5728 Windows \u4e0a\uff0cstrerror \u80fd\u591f\u5904\u7406 Winsock \u9519\u8bef\u7801\uff08\u4ee5\u524d\u4ec5\u5728\u540e\u7aef\u4ee3\u7801\u4e2d\u652f\u6301\uff0c\u524d\u7aef\u4ee3\u7801\u4e0d\u652f\u6301\uff09\uff1bstrerror_r \u5219\u59cb\u7ec8\u9075\u5faa GNU \u7684\u8fd4\u56de\u7ea6\u5b9a\u3002", "title": "\u5728 Postgres \u4ee3\u7801\u4e2d\uff0cprintf \u7cfb\u5217\u51fd\u6570\u4ee5\u53ca strerror \u548c strerror_r \u73b0\u5728\u5728\u5404\u5e73\u53f0\u4e0a\u884c\u4e3a\u4e00\u81f4", "commits": ["26e9d4d4e", "758ce9b77", "96bf88d52", "d6c55de1f"], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "fcf39e5f007dfaffb006c811ef6617de87554210522a311ec453f229ccd326a1", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["26e9d4d4e"], ["758ce9b77"], ["96bf88d52"], ["d6c55de1f"]], "identity_text": "printf-family functions, as well as strerror and strerror_r, now behave uniformly across platforms within Postgres code (Tom Lane) Notably, printf understands %m everywhere; on Windows, strerror copes with Winsock error codes (it used to do so in backend but not frontend code); and strerror_r always follows the GNU return convention.", "commit_aliases": ["26e9d4d4e", "758ce9b77", "96bf88d52", "d6c55de1f"], "source_commits": ["26e9d4d4e", "758ce9b77", "96bf88d52", "d6c55de1f"], "source_entry_id": "12.0/changes/144", "db_id": "7e56a0f4f3bc45b1841be6d37f00bd60", "patch_ids": ["3b01c5e9b781c02ce44967d10b0c103f", "688076681e70b133f976e80357509864", "d070d5fc9bef53e5f1f041ad7ff64f5e", "fa997b822641bb7fe1b9dfcc8581dc44"], "statement_hash": "1cd250e63b77a40568517f5a72af5ed893aeadf7162ab8fd862683930a3a192b", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-fef65908aa64c686", "migration": false}, {"id": "12.0-d81abfd3f5c1dee8", "cves": [], "html": "<p>\u8981\u6c42\u7b26\u5408 C99 \u7684\u7f16\u8bd1\u5668\uff0c\u5e76\u5728 <span>Windows</span> \u4e0a\u8981\u6c42 <acronym>MSVC</acronym> 2013 \u6216\u66f4\u9ad8\u7248\u672c\uff08Andres Freund\uff09<a href=\"https://postgr.es/c/d9dd406fe\">\u00a7</a></p>", "text": "\u8981\u6c42\u7b26\u5408 C99 \u7684\u7f16\u8bd1\u5668\uff0c\u5e76\u5728 Windows \u4e0a\u8981\u6c42 MSVC 2013 \u6216\u66f4\u9ad8\u7248\u672c\uff08Andres Freund\uff09\u00a7", "title": "\u8981\u6c42\u7b26\u5408 C99 \u7684\u7f16\u8bd1\u5668\uff0c\u5e76\u5728 Windows \u4e0a\u8981\u6c42 MSVC 2013 \u6216\u66f4\u9ad8\u7248\u672c", "commits": ["d9dd406fe"], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "f9af1b8166fb39f2e564b46b51faf01ea6e062816b993a2968bc2bb4d1da9c32", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["d9dd406fe"]], "identity_text": "Require a C99-compliant compiler, and MSVC 2013 or later on Windows (Andres Freund)", "commit_aliases": ["d9dd406fe"], "source_commits": ["d9dd406fe"], "source_entry_id": "12.0/changes/145", "db_id": "b7ddeb1560beac985f2244eba3c95ba7", "patch_ids": ["6f8af7dc3e34b40e55d39201013c04e4"], "statement_hash": "edaabd52e5ea772074581dd5a8e0f547d30b874df60cc85c4162d278c80748b4", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d81abfd3f5c1dee8", "migration": false}, {"id": "12.0-1035e5f57e930abf", "cves": [], "html": "<p>\u4f7f\u7528 <span>pandoc</span> \u4ee3\u66ff <span>lynx</span> \u751f\u6210\u7eaf\u6587\u672c\u6587\u6863\u8f93\u51fa\u6587\u4ef6\uff08Peter Eisentraut\uff09<a href=\"https://postgr.es/c/96b8b8b6f\">\u00a7</a> <a href=\"https://postgr.es/c/2488ea7a9\">\u00a7</a></p>\n<p>\u8fd9\u4ec5\u5f71\u54cd <code>make dist</code> \u671f\u95f4\u751f\u6210\u7684 <code>INSTALL</code> \u6587\u4ef6\uff0c\u4ee5\u53ca\u5f88\u5c11\u4f7f\u7528\u7684\u7eaf\u6587\u672c\u8f93\u51fa\u6587\u4ef6 <code>postgres.txt</code>\u3002Pandoc \u7684\u8f93\u51fa\u4f18\u4e8e lynx\uff0c\u5e76\u80fd\u907f\u514d\u67d0\u4e9b\u533a\u57df\u8bbe\u7f6e/\u7f16\u7801\u95ee\u9898\u3002\u9700\u8981 Pandoc 1.13 \u6216\u66f4\u9ad8\u7248\u672c\u3002</p>", "text": "\u4f7f\u7528 pandoc \u4ee3\u66ff lynx \u751f\u6210\u7eaf\u6587\u672c\u6587\u6863\u8f93\u51fa\u6587\u4ef6\uff08Peter Eisentraut\uff09\u00a7 \u00a7 \u8fd9\u4ec5\u5f71\u54cd make dist \u671f\u95f4\u751f\u6210\u7684 INSTALL \u6587\u4ef6\uff0c\u4ee5\u53ca\u5f88\u5c11\u4f7f\u7528\u7684\u7eaf\u6587\u672c\u8f93\u51fa\u6587\u4ef6 postgres.txt\u3002Pandoc \u7684\u8f93\u51fa\u4f18\u4e8e lynx\uff0c\u5e76\u80fd\u907f\u514d\u67d0\u4e9b\u533a\u57df\u8bbe\u7f6e/\u7f16\u7801\u95ee\u9898\u3002\u9700\u8981 Pandoc 1.13 \u6216\u66f4\u9ad8\u7248\u672c\u3002", "title": "\u4f7f\u7528 pandoc \u4ee3\u66ff lynx \u751f\u6210\u7eaf\u6587\u672c\u6587\u6863\u8f93\u51fa\u6587\u4ef6", "commits": ["2488ea7a9", "96b8b8b6f"], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "185fdac17525bd1d4c2792b74203f793e48d42140b2027cd800c274216bbb65e", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["2488ea7a9"], ["96b8b8b6f"]], "identity_text": "Use pandoc, not lynx, for generating plain-text documentation output files (Peter Eisentraut) This affects only the INSTALL file generated during make dist and the seldom-used plain-text postgres.txt output file. Pandoc produces better output than lynx and avoids some locale/encoding issues. Pandoc version 1.13 or later is required.", "commit_aliases": ["2488ea7a9", "96b8b8b6f"], "source_commits": ["2488ea7a9", "96b8b8b6f"], "source_entry_id": "12.0/changes/146", "db_id": "de1e63479c27466c61b369ca8e7973e3", "patch_ids": ["26fc6e98ba380a96f1e8819e19bd4e4e", "b3742c7ec8650877d1e3773e213b6d38"], "statement_hash": "2153f829ec1d38b5c59e17497c372236feab5278dedf7f34e8fe772a1232ba47", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-1035e5f57e930abf", "migration": false}, {"id": "12.0-90657d2176648af7", "cves": [], "html": "<p>\u652f\u6301\u5728 <span>PostgreSQL</span> \u6587\u6863\u4e2d\u4f7f\u7528\u56fe\u50cf\uff08J\u00fcrgen Purtz\uff09<a href=\"https://postgr.es/c/ea55aec0a\">\u00a7</a></p>", "text": "\u652f\u6301\u5728 PostgreSQL \u6587\u6863\u4e2d\u4f7f\u7528\u56fe\u50cf\uff08J\u00fcrgen Purtz\uff09\u00a7", "title": "\u652f\u6301\u5728 PostgreSQL \u6587\u6863\u4e2d\u4f7f\u7528\u56fe\u50cf", "commits": ["ea55aec0a"], "section": "\u6e90\u4ee3\u7801", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.12", "source_hash": "c8bfc49cc0cebe689e0e1b0c2da614592925c481e5590d3ca78f6dc2299c27da", "section_path": ["\u6e90\u4ee3\u7801"], "commit_groups": [["ea55aec0a"]], "identity_text": "Support use of images in the PostgreSQL documentation (J\u00fcrgen Purtz)", "commit_aliases": ["ea55aec0a"], "source_commits": ["ea55aec0a"], "source_entry_id": "12.0/changes/147", "db_id": "7e1c41f8b091b25e815f750ef8b5ff0c", "patch_ids": ["f5bad8fd5c5ca11369839c15edbb2b92"], "statement_hash": "709d7e9349583e768f060ada2f66bf6a5b8f85c86adecef0fc04e1eef467c1ad", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-90657d2176648af7", "migration": false}, {"id": "12.0-f2c936d6c49be4e3", "cves": [], "html": "<p>\u5141\u8bb8\u5728\u66f4\u591a\u60c5\u51b5\u4e0b\u5c06 <code>ORDER BY</code> \u6392\u5e8f\u548c <code>LIMIT</code> \u5b50\u53e5\u4e0b\u63a8\u5230<a href=\"/docs/12/postgres-fdw.html\" title=\"F.33.\u00a0postgres_fdw\">postgres_fdw</a>\u5916\u90e8\u670d\u52a1\u5668\uff08Etsuro Fujita\uff09<a href=\"https://postgr.es/c/ffab494a4\">\u00a7</a> <a href=\"https://postgr.es/c/d50d172e5\">\u00a7</a></p>", "text": "\u5141\u8bb8\u5728\u66f4\u591a\u60c5\u51b5\u4e0b\u5c06 ORDER BY \u6392\u5e8f\u548c LIMIT \u5b50\u53e5\u4e0b\u63a8\u5230postgres_fdw\u5916\u90e8\u670d\u52a1\u5668\uff08Etsuro Fujita\uff09\u00a7 \u00a7", "title": "\u5141\u8bb8\u5728\u66f4\u591a\u60c5\u51b5\u4e0b\u5c06 ORDER BY \u6392\u5e8f\u548c LIMIT \u5b50\u53e5\u4e0b\u63a8\u5230postgres_fdw\u5916\u90e8\u670d\u52a1\u5668", "commits": ["d50d172e5", "ffab494a4"], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "abad846399789c715b060306a56d3f2f30eec23f52d39eafe2259c2fee114060", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["d50d172e5"], ["ffab494a4"]], "identity_text": "Allow ORDER BY sorts and LIMIT clauses to be pushed to postgres-fdw foreign servers in more cases (Etsuro Fujita)", "commit_aliases": ["d50d172e5", "ffab494a4"], "source_commits": ["d50d172e5", "ffab494a4"], "source_entry_id": "12.0/changes/148", "db_id": "6bfef9f427b9e111487f09baffa940a6", "patch_ids": ["774b81225db3f71ec011f3db27800155", "99e8764a5e470b2ee66db08bcf61da2a"], "statement_hash": "0e1abfa1b44a512d83918e3dd19a895ecdc04502fce5e694537fc333046d7573", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-f2c936d6c49be4e3", "migration": false}, {"id": "12.0-866019c1dc1f3064", "cves": [], "html": "<p>\u6539\u8fdb\u4f18\u5316\u5668\u5bf9 <span>postgres_fdw</span> \u67e5\u8be2\u7684\u4ee3\u4ef7\u8ba1\u7b97\uff08Etsuro Fujita\uff09<a href=\"https://postgr.es/c/f8f6e4467\">\u00a7</a> <a href=\"https://postgr.es/c/fd1afdbaf\">\u00a7</a> <a href=\"https://postgr.es/c/edbcbe277\">\u00a7</a></p>", "text": "\u6539\u8fdb\u4f18\u5316\u5668\u5bf9 postgres_fdw \u67e5\u8be2\u7684\u4ee3\u4ef7\u8ba1\u7b97\uff08Etsuro Fujita\uff09\u00a7 \u00a7 \u00a7", "title": "\u6539\u8fdb\u4f18\u5316\u5668\u5bf9 postgres_fdw \u67e5\u8be2\u7684\u4ee3\u4ef7\u8ba1\u7b97", "commits": ["edbcbe277", "f8f6e4467", "fd1afdbaf"], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "f843d917da4c68fd9fbb055187679e8f5fb16d4b5e75feb0270bf1afa2a21746", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["edbcbe277"], ["f8f6e4467"], ["fd1afdbaf"]], "identity_text": "Improve optimizer cost accounting for postgres_fdw queries (Etsuro Fujita)", "commit_aliases": ["edbcbe277", "f8f6e4467", "fd1afdbaf"], "source_commits": ["edbcbe277", "f8f6e4467", "fd1afdbaf"], "source_entry_id": "12.0/changes/149", "db_id": "4fc19b78c4dd0c1497328a27689dde81", "patch_ids": ["001b63b7a2b500ffb77fea94b59523d8", "3635250eaaa30d70c1fd1a9549e4dc5f", "601a1be8e3120eea4547c9d48e42bbc1"], "statement_hash": "3e40577eb30986dc4c0869bda6ba6c7f5fa11836006f92a7f30f77b0a115d603", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-866019c1dc1f3064", "migration": false}, {"id": "12.0-9aca17db3112c5ec", "cves": [], "html": "<p>\u6b63\u786e\u9075\u5faa\u5f15\u7528 <span>postgres_fdw</span> \u8868\u7684\u89c6\u56fe\u4e0a\u7684 <code>WITH CHECK OPTION</code>\uff08Etsuro Fujita\uff09<a href=\"https://postgr.es/c/a45adc747\">\u00a7</a></p>\n<p>\u867d\u7136 <span>postgres_fdw</span> \u8868\u4e0a\u7684 <code>CHECK OPTION</code> \u4f1a\u88ab\u5ffd\u7565\uff08\u56e0\u4e3a\u5f15\u7528\u7684\u662f\u5916\u90e8\u8868\uff09\uff0c\u4f46\u6b64\u7c7b\u8868\u4e0a\u7684\u89c6\u56fe\u88ab\u89c6\u4e3a\u672c\u5730\u89c6\u56fe\uff0c\u56e0\u6b64\u6b64\u66f4\u6539\u4f1a\u5bf9\u5b83\u4eec\u5b9e\u65bd <code>CHECK OPTION</code>\u3002\u4ee5\u524d\uff0c\u53ea\u6709\u5e26\u6709 <code>RETURNING</code> \u5b50\u53e5\u4e14\u8fd4\u56de\u4e86 <code>CHECK OPTION</code> \u503c\u7684 <code>INSERT</code> \u548c <code>UPDATE</code> \u624d\u4f1a\u5f97\u5230\u9a8c\u8bc1\u3002</p>", "text": "\u6b63\u786e\u9075\u5faa\u5f15\u7528 postgres_fdw \u8868\u7684\u89c6\u56fe\u4e0a\u7684 WITH CHECK OPTION\uff08Etsuro Fujita\uff09\u00a7 \u867d\u7136 postgres_fdw \u8868\u4e0a\u7684 CHECK OPTION \u4f1a\u88ab\u5ffd\u7565\uff08\u56e0\u4e3a\u5f15\u7528\u7684\u662f\u5916\u90e8\u8868\uff09\uff0c\u4f46\u6b64\u7c7b\u8868\u4e0a\u7684\u89c6\u56fe\u88ab\u89c6\u4e3a\u672c\u5730\u89c6\u56fe\uff0c\u56e0\u6b64\u6b64\u66f4\u6539\u4f1a\u5bf9\u5b83\u4eec\u5b9e\u65bd CHECK OPTION\u3002\u4ee5\u524d\uff0c\u53ea\u6709\u5e26\u6709 RETURNING \u5b50\u53e5\u4e14\u8fd4\u56de\u4e86 CHECK OPTION \u503c\u7684 INSERT \u548c UPDATE \u624d\u4f1a\u5f97\u5230\u9a8c\u8bc1\u3002", "title": "\u6b63\u786e\u9075\u5faa\u5f15\u7528 postgres_fdw \u8868\u7684\u89c6\u56fe\u4e0a\u7684 WITH CHECK OPTION", "commits": ["a45adc747"], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "35322f2b4bb440070c72f03f6a2effeb2c81f6adf9b1d358f72d8ec1594133b8", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["a45adc747"]], "identity_text": "Properly honor WITH CHECK OPTION on views that reference postgres_fdw tables (Etsuro Fujita) While CHECK OPTIONs on postgres_fdw tables are ignored (because the reference is foreign), views on such tables are considered local, so this change enforces CHECK OPTIONs on them. Previously, only INSERTs and UPDATEs with RETURNING clauses that returned CHECK OPTION values were validated.", "commit_aliases": ["a45adc747"], "source_commits": ["a45adc747"], "source_entry_id": "12.0/changes/150", "db_id": "b22e484fb829220655817e6e5eec037c", "patch_ids": ["d621af7fb1e8939b61b021338c9fe8d3"], "statement_hash": "c9e2313d878c76802119385d0e6884d685ef28ab354fd8f969526c810c7400af", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-9aca17db3112c5ec", "migration": false}, {"id": "12.0-58fb46a0059fe154", "cves": [], "html": "<p>\u5141\u8bb8 <a href=\"/docs/12/pgstatstatements.html\" title=\"F.29.\u00a0pg_stat_statements\"><code>pg_stat_statements_reset()</code></a> \u63d0\u4f9b\u66f4\u7ec6\u7684\u63a7\u5236\u7c92\u5ea6\uff08Haribabu Kommi\uff0cAmit Kapila\uff09<a href=\"https://postgr.es/c/43cbedab8\">\u00a7</a></p>\n<p>\u6b64\u51fd\u6570\u73b0\u5728\u5141\u8bb8\u91cd\u7f6e\u7279\u5b9a\u6570\u636e\u5e93\u3001\u7528\u6237\u548c\u67e5\u8be2\u7684\u7edf\u8ba1\u4fe1\u606f\u3002</p>", "text": "\u5141\u8bb8 pg_stat_statements_reset() \u63d0\u4f9b\u66f4\u7ec6\u7684\u63a7\u5236\u7c92\u5ea6\uff08Haribabu Kommi\uff0cAmit Kapila\uff09\u00a7 \u6b64\u51fd\u6570\u73b0\u5728\u5141\u8bb8\u91cd\u7f6e\u7279\u5b9a\u6570\u636e\u5e93\u3001\u7528\u6237\u548c\u67e5\u8be2\u7684\u7edf\u8ba1\u4fe1\u606f\u3002", "title": "\u5141\u8bb8 pg_stat_statements_reset() \u63d0\u4f9b\u66f4\u7ec6\u7684\u63a7\u5236\u7c92\u5ea6", "commits": ["43cbedab8"], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "2bdecb4505f3a2d6cde358f84888aab9bdeaecd0a66e634adfd389cb03e1b80d", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["43cbedab8"]], "identity_text": "Allow pg_stat_statements_reset() to be more granular (Haribabu Kommi, Amit Kapila) The function now allows reset of statistics for specific databases, users, and queries.", "commit_aliases": ["43cbedab8"], "source_commits": ["43cbedab8"], "source_entry_id": "12.0/changes/151", "db_id": "f7b4c264fb7b89097ccb11af182345b7", "patch_ids": ["3565706cb2fcccf0a9cd34ef3ac4b777"], "statement_hash": "cc326070a646dbff6f0ffae86fff85128cccadbd6566a293c279da26c6562107", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-58fb46a0059fe154", "migration": false}, {"id": "12.0-ee4b1d419ba2b03e", "cves": [], "html": "<p>\u5141\u8bb8\u63a7\u5236<a href=\"/docs/12/auto-explain.html\" title=\"F.4.\u00a0auto_explain\">auto_explain</a>\u7684\u65e5\u5fd7\u7ea7\u522b\uff08Tom Dunstan\uff0cAndrew Dunstan\uff09<a href=\"https://postgr.es/c/2d36a5e9d\">\u00a7</a></p>\n<p>\u9ed8\u8ba4\u503c\u4e3a <code>LOG</code>\u3002</p>", "text": "\u5141\u8bb8\u63a7\u5236auto_explain\u7684\u65e5\u5fd7\u7ea7\u522b\uff08Tom Dunstan\uff0cAndrew Dunstan\uff09\u00a7 \u9ed8\u8ba4\u503c\u4e3a LOG\u3002", "title": "\u5141\u8bb8\u63a7\u5236auto_explain\u7684\u65e5\u5fd7\u7ea7\u522b", "commits": ["2d36a5e9d"], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "1ecaeff852799d5bbcca00e3009b6028ebfe3cee8c2728ad986b83e180804454", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["2d36a5e9d"]], "identity_text": "Allow control of the auto-explain log level (Tom Dunstan, Andrew Dunstan) The default is LOG.", "commit_aliases": ["2d36a5e9d"], "source_commits": ["2d36a5e9d"], "source_entry_id": "12.0/changes/152", "db_id": "1adce5d1232dd3984f613bf74cda3b50", "patch_ids": ["02e9f93316b4d1ea09c6a59901eba611"], "statement_hash": "192a9997a27fe768fb32fa1b14aa83f3003bfd48d34d7798b28c7644bb529d2c", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-ee4b1d419ba2b03e", "migration": false}, {"id": "12.0-56326a9d0e30093c", "cves": [], "html": "<p>\u7528\u65b0\u7684\u6807\u70b9\u548c\u7b26\u53f7\u66f4\u65b0<a href=\"/docs/12/unaccent.html\" title=\"F.43.\u00a0unaccent\">unaccent</a>\u89c4\u5219\uff08Hugh Ranalli\uff0cMicha\u00ebl Paquier\uff09<a href=\"https://postgr.es/c/e1c1d5444\">\u00a7</a></p>", "text": "\u7528\u65b0\u7684\u6807\u70b9\u548c\u7b26\u53f7\u66f4\u65b0unaccent\u89c4\u5219\uff08Hugh Ranalli\uff0cMicha\u00ebl Paquier\uff09\u00a7", "title": "\u7528\u65b0\u7684\u6807\u70b9\u548c\u7b26\u53f7\u66f4\u65b0unaccent\u89c4\u5219", "commits": ["e1c1d5444"], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "026c7892d3c6ec031eac35fc92aa7b767a4dd08e1d73d6202499a3957d87d2d3", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["e1c1d5444"]], "identity_text": "Update unaccent rules with new punctuation and symbols (Hugh Ranalli, Micha\u00ebl Paquier)", "commit_aliases": ["e1c1d5444"], "source_commits": ["e1c1d5444"], "source_entry_id": "12.0/changes/153", "db_id": "10434220fad81e02a244c3570f912ce4", "patch_ids": ["bce93ad77c05eb49c67eba6dc1600c15"], "statement_hash": "d6ae01be6cb24f18c0196f6a517fe133b2e4c5dd6b6073f7e7bbe065b9facccc", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-56326a9d0e30093c", "migration": false}, {"id": "12.0-5ca36097a47ab397", "cves": [], "html": "<p>\u5141\u8bb8 <span>unaccent</span> \u5904\u7406\u67d0\u4e9b\u4ee5\u7ec4\u5408\u5b57\u7b26\u7f16\u7801\u7684\u91cd\u97f3\uff08Hugh Ranalli\uff09<a href=\"https://postgr.es/c/456e3718e\">\u00a7</a></p>", "text": "\u5141\u8bb8 unaccent \u5904\u7406\u67d0\u4e9b\u4ee5\u7ec4\u5408\u5b57\u7b26\u7f16\u7801\u7684\u91cd\u97f3\uff08Hugh Ranalli\uff09\u00a7", "title": "\u5141\u8bb8 unaccent \u5904\u7406\u67d0\u4e9b\u4ee5\u7ec4\u5408\u5b57\u7b26\u7f16\u7801\u7684\u91cd\u97f3", "commits": ["456e3718e"], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "a862d81dfe601844d993b376299de4101f14b36c637121d5b1e4d146d08e2b8e", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["456e3718e"]], "identity_text": "Allow unaccent to handle some accents encoded as combining characters (Hugh Ranalli)", "commit_aliases": ["456e3718e"], "source_commits": ["456e3718e"], "source_entry_id": "12.0/changes/154", "db_id": "01cfd5de8d82ca148ac8efe51039a030", "patch_ids": ["25d7862623d227887fd4f33cb8207069"], "statement_hash": "51c64225ac43562e79f77bb0ac89cbdcd3feeb4c57afce08802a13e38c2e101f", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-5ca36097a47ab397", "migration": false}, {"id": "12.0-6e87438c6320cc29", "cves": [], "html": "<p>\u5141\u8bb8 <span>unaccent</span> \u79fb\u9664\u5e0c\u814a\u5b57\u7b26\u7684\u91cd\u97f3\uff08Tasos Maschalidis\uff09<a href=\"https://postgr.es/c/5e8d670c3\">\u00a7</a></p>", "text": "\u5141\u8bb8 unaccent \u79fb\u9664\u5e0c\u814a\u5b57\u7b26\u7684\u91cd\u97f3\uff08Tasos Maschalidis\uff09\u00a7", "title": "\u5141\u8bb8 unaccent \u79fb\u9664\u5e0c\u814a\u5b57\u7b26\u7684\u91cd\u97f3", "commits": ["5e8d670c3"], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "ab3387fde3e1c381599fa5d4a93af400ddf8cb0fc3817110da301c839e010efe", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["5e8d670c3"]], "identity_text": "Allow unaccent to remove accents from Greek characters (Tasos Maschalidis)", "commit_aliases": ["5e8d670c3"], "source_commits": ["5e8d670c3"], "source_entry_id": "12.0/changes/155", "db_id": "400401783b3ced94f33f916793904680", "patch_ids": ["53a8efd0d2408cab7378d129b0c10e35"], "statement_hash": "b804a900b1da5e4bebb7b96594b3ded176993f59f60643414435ebf43a9ffed1", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-6e87438c6320cc29", "migration": false}, {"id": "12.0-edbecc78936474e2", "cves": [], "html": "<p>\u4e3a<a href=\"/docs/12/amcheck.html\" title=\"F.2.\u00a0amcheck\">amcheck</a>\u7684 <code>bt_index_parent_check()</code> \u51fd\u6570\u6dfb\u52a0\u53c2\u6570\uff0c\u4ee5\u4ece\u6811\u6839\u5f00\u59cb\u68c0\u67e5\u6bcf\u4e2a\u7d22\u5f15\u5143\u7ec4\uff08Peter Geoghegan\uff09<a href=\"https://postgr.es/c/c1afd175b\">\u00a7</a></p>", "text": "\u4e3aamcheck\u7684 bt_index_parent_check() \u51fd\u6570\u6dfb\u52a0\u53c2\u6570\uff0c\u4ee5\u4ece\u6811\u6839\u5f00\u59cb\u68c0\u67e5\u6bcf\u4e2a\u7d22\u5f15\u5143\u7ec4\uff08Peter Geoghegan\uff09\u00a7", "title": "\u4e3aamcheck\u7684 bt_index_parent_check() \u51fd\u6570\u6dfb\u52a0\u53c2\u6570\uff0c\u4ee5\u4ece\u6811\u6839\u5f00\u59cb\u68c0\u67e5\u6bcf\u4e2a\u7d22\u5f15\u5143\u7ec4", "commits": ["c1afd175b"], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "beffe773650ba7eb1980bf9cf9b750bda11ee1f3bcb71c8d8571ca615efe718c", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["c1afd175b"]], "identity_text": "Add a parameter to amcheck 's bt_index_parent_check() function to check each index tuple from the root of the tree (Peter Geoghegan)", "commit_aliases": ["c1afd175b"], "source_commits": ["c1afd175b"], "source_entry_id": "12.0/changes/156", "db_id": "f5a55d6f90ee9d49c6a5668bfe24182e", "patch_ids": ["911bcb21f390588cd03c683f29359ede"], "statement_hash": "9c75b8fb03af34a6bbb911cb566d8450ee37568df94cb1d0fbde67325e45a175", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-edbecc78936474e2", "migration": false}, {"id": "12.0-d47f10517259078f", "cves": [], "html": "<p>\u6539\u8fdb<a href=\"/docs/12/oid2name.html\" title=\"oid2name\"><span>oid2name</span></a>\u548c<a href=\"/docs/12/vacuumlo.html\" title=\"vacuumlo\"><span><span>vacuumlo</span></span></a>\u7684\u9009\u9879\u5904\u7406\uff0c\u4f7f\u5176\u4e0e\u5176\u4ed6\u547d\u4ee4\u4e00\u81f4\uff08Tatsuro Yamada\uff09<a href=\"https://postgr.es/c/1aaf532de\">\u00a7</a> <a href=\"https://postgr.es/c/bfea331a5\">\u00a7</a></p>", "text": "\u6539\u8fdboid2name\u548cvacuumlo\u7684\u9009\u9879\u5904\u7406\uff0c\u4f7f\u5176\u4e0e\u5176\u4ed6\u547d\u4ee4\u4e00\u81f4\uff08Tatsuro Yamada\uff09\u00a7 \u00a7", "title": "\u6539\u8fdboid2name\u548cvacuumlo\u7684\u9009\u9879\u5904\u7406\uff0c\u4f7f\u5176\u4e0e\u5176\u4ed6\u547d\u4ee4\u4e00\u81f4", "commits": ["1aaf532de", "bfea331a5"], "section": "\u9644\u52a0\u6a21\u5757", "category": "feature", "source_url": "/docs/release/12.0/#id-1.11.6.28.5.13", "source_hash": "63e31a7ae6a22a2e6b39ba5c99cf1466f9dbe0dff8768d29216ee1e4489845e2", "section_path": ["\u9644\u52a0\u6a21\u5757"], "commit_groups": [["1aaf532de"], ["bfea331a5"]], "identity_text": "Improve oid2name and vacuumlo option handling to match other commands (Tatsuro Yamada)", "commit_aliases": ["1aaf532de", "bfea331a5"], "source_commits": ["1aaf532de", "bfea331a5"], "source_entry_id": "12.0/changes/157", "db_id": "eb38e3ec58f9996ef1fac7ae8307d028", "patch_ids": ["2ee7f18e0ed069187dda98edd22b90d6", "649dc2557f258d5162b1697b2168258c"], "statement_hash": "d20ac956962d5553a001b38e3eb5c924a8bd43c5c0a1a22defaedf28af729c8d", "relations": [], "category_label": "\u65b0\u529f\u80fd", "url": "/docs/compare/?release=12.0#12.0-d47f10517259078f", "migration": false}], "initial_entry_count": 180, "migration_html": "<p>\u5bf9\u4e8e\u5e0c\u671b\u4ece\u4efb\u4f55\u5148\u524d\u7248\u672c\u8fc1\u79fb\u6570\u636e\u7684\u7528\u6237\uff0c\u9700\u8981\u4f7f\u7528<a href=\"/docs/12/app-pg-dumpall.html\" title=\"pg_dumpall\"><span><span>pg_dumpall</span></span></a>\u8fdb\u884c\u5bfc\u51fa/\u6062\u590d\uff0c\u6216\u4f7f\u7528<a href=\"/docs/12/pgupgrade.html\" title=\"pg_upgrade\"><span><span>pg_upgrade</span></span></a>\u6216\u903b\u8f91\u590d\u5236\u3002\u6709\u5173\u8fc1\u79fb\u5230\u65b0\u4e3b\u7248\u672c\u7684\u4e00\u822c\u4fe1\u606f\uff0c\u8bf7\u53c2\u89c1<a href=\"/docs/12/upgrading.html\" title=\"18.6.\u00a0\u5347\u7ea7 PostgreSQL \u96c6\u7c07\">\u7b2c\u00a018.6\u00a0\u8282</a>\u3002</p>\n<p>\u7248\u672c 12 \u5305\u542b\u8bb8\u591a\u53ef\u80fd\u5f71\u54cd\u4e0e\u5148\u524d\u7248\u672c\u517c\u5bb9\u6027\u7684\u53d8\u66f4\u3002\u8bf7\u6ce8\u610f\u4ee5\u4e0b\u4e0d\u517c\u5bb9\u6027\uff1a</p>\n<div>\n</div>", "category_filters": [{"key": "feature", "label": "\u65b0\u529f\u80fd", "count": 139}, {"key": "bugfix", "label": "BUG \u4fee\u590d", "count": 4}, {"key": "security", "label": "\u5b89\u5168\u76f8\u5173", "count": 0}, {"key": "performance", "label": "\u6027\u80fd\u6539\u8fdb", "count": 14}, {"key": "compatibility", "label": "\u517c\u5bb9\u6027\u53d8\u5316", "count": 23}, {"key": "improvement", "label": "\u5176\u4ed6\u6539\u8fdb", "count": 0}], "security_rows": [{"id": "CVE-2024-7348", "title": "PostgreSQL relation replacement during pg_dump executes arbitrary SQL", "url": "https://www.postgresql.org/support/security/CVE-2024-7348/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Time-of-check Time-of-use (TOCTOU) race condition in pg_dump in PostgreSQL allows an object creator to execute arbitrary SQL functions as the user running pg_dump, which is often a superuser. The attack involves replacing another relation type with a view or foreign table. The attack requires waiting for pg_dump to start, but winning the race condition is trivial if the attacker retains an open transaction. Versions before PostgreSQL 16.4, 15.8, 14.13, 13.16, and 12.20 are affected.\n\nThe PostgreSQL project thanks Noah Misch for reporting this problem.", "description_language": "en", "fixed": "12.20", "fixed_url": "/docs/compare/?release=12.20", "affected": "12", "component": "core server", "mentions": [{"build": "12.20", "version": "12.20", "title": "\u9632\u6b62\u5728 pg_dump \u671f\u95f4\u6267\u884c\u672a\u7ecf\u6388\u6743\u7684\u4ee3\u7801", "url": "/docs/compare/?release=12.20#12.20-0874e137f764db4c"}], "evidence": "branch-matrix"}, {"id": "CVE-2024-10979", "title": "PostgreSQL PL/Perl environment variable changes execute arbitrary code", "url": "https://www.postgresql.org/support/security/CVE-2024-10979/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Incorrect control of environment variables in PostgreSQL PL/Perl allows an unprivileged database user to change sensitive process environment variables (e.g. PATH ). That often suffices to enable arbitrary code execution, even if the attacker lacks a database server operating system user. Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected.\n\nThe PostgreSQL project thanks Coby Abrams for reporting this problem.", "description_language": "en", "fixed": "12.21", "fixed_url": "/docs/compare/?release=12.21", "affected": "12", "component": "core server", "mentions": [{"build": "12.21", "version": "12.21", "title": "\u9632\u6b62\u53d7\u4fe1\u4efb\u7684 PL/Perl \u4ee3\u7801\u66f4\u6539\u73af\u5883\u53d8\u91cf", "url": "/docs/compare/?release=12.21#12.21-1e5606f9a5aeeb3a"}], "evidence": "branch-matrix"}, {"id": "CVE-2024-10978", "title": "PostgreSQL SET ROLE, SET SESSION AUTHORIZATION reset to wrong user ID", "url": "https://www.postgresql.org/support/security/CVE-2024-10978/", "score": 4.2, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N", "description": "Incorrect privilege assignment in PostgreSQL allows a less-privileged application user to view or change different rows from those intended. An attack requires the application to use SET ROLE , SET SESSION AUTHORIZATION , or an equivalent feature. The problem arises when an application query uses parameters from the attacker or conveys query results to the attacker. If that query reacts to current_setting('role') or the current user ID, it may modify or return data as though the session had not used SET ROLE or SET SESSION AUTHORIZATION . The attacker does not control which incorrect user ID applies. Query text from less-privileged sources is not a concern here, because SET ROLE and SET SESSION AUTHORIZATION are not sandboxes for unvetted queries. Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected.\n\nThe PostgreSQL project thanks Tom Lane for reporting this problem.", "description_language": "en", "fixed": "12.21", "fixed_url": "/docs/compare/?release=12.21", "affected": "12", "component": "core server", "mentions": [{"build": "12.22", "version": "12.22", "title": "\u6062\u590d ALTER {ROLE|DATABASE} SET role \u7684\u529f\u80fd", "url": "/docs/compare/?release=12.22#12.22-87cfe420bf12aef8"}, {"build": "12.21", "version": "12.21", "title": "\u4fee\u590d SET SESSION AUTHORIZATION \u4e0e SET ROLE \u4e4b\u95f4\u610f\u5916\u7684\u4ea4\u4e92", "url": "/docs/compare/?release=12.21#12.21-77f2e83b58681f50"}], "evidence": "branch-matrix"}, {"id": "CVE-2024-10977", "title": "PostgreSQL libpq retains an error message from man-in-the-middle", "url": "https://www.postgresql.org/support/security/CVE-2024-10977/", "score": 3.1, "vector": "AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:N", "description": "Client use of server error message in PostgreSQL allows a server not trusted under current SSL or GSS settings to furnish arbitrary non-NUL bytes to the libpq application. For example, a man-in-the-middle attacker could send a long error message that a human or screen-scraper user of psql mistakes for valid query results. This is probably not a concern for clients where the user interface unambiguously indicates the boundary between one error message and other text. Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected.\n\nThe PostgreSQL project thanks Jacob Champion for reporting this problem.", "description_language": "en", "fixed": "12.21", "fixed_url": "/docs/compare/?release=12.21", "affected": "12", "component": "client", "mentions": [{"build": "12.21", "version": "12.21", "title": "\u4f7f libpq \u4e22\u5f03\u5728 SSL \u6216 GSS \u534f\u8bae\u534f\u5546\u671f\u95f4\u6536\u5230\u7684\u9519\u8bef\u6d88\u606f", "url": "/docs/compare/?release=12.21#12.21-6fc5c9c88c8d9ac9"}], "evidence": "branch-matrix"}, {"id": "CVE-2024-10976", "title": "PostgreSQL row security below e.g. subqueries disregards user ID changes", "url": "https://www.postgresql.org/support/security/CVE-2024-10976/", "score": 4.2, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N", "description": "Incomplete tracking in PostgreSQL of tables with row security allows a reused query to view or change different rows from those intended. CVE-2023-2455 and CVE-2016-2193 fixed most interaction between row security and user ID changes. They missed cases where a subquery, WITH query, security invoker view, or SQL-language function references a table with a row-level security policy. This has the same consequences as the two earlier CVEs. That is to say, it leads to potentially incorrect policies being applied in cases where role-specific policies are used and a given query is planned under one role and then executed under other roles. This scenario can happen under security definer functions or when a common user and query is planned initially and then re-used across multiple SET ROLEs.\n\nApplying an incorrect policy may permit a user to complete otherwise-forbidden reads and modifications. This affects only databases that have used CREATE POLICY to define a row security policy. An attacker must tailor an attack to a particular application's pattern of query plan reuse, user ID changes, and role-specific row security policies. Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected.", "description_language": "en", "fixed": "12.21", "fixed_url": "/docs/compare/?release=12.21", "affected": "12", "component": "core server", "mentions": [{"build": "12.21", "version": "12.21", "title": "\u786e\u4fdd\u5f53 RLS \u5e94\u7528\u4e8e\u975e\u9876\u7ea7\u8868\u5f15\u7528\u65f6\uff0c\u7f13\u5b58\u7684\u6267\u884c\u8ba1\u5212\u88ab\u6807\u8bb0\u4e3a\u4f9d\u8d56\u4e8e\u8c03\u7528\u89d2\u8272", "url": "/docs/compare/?release=12.21#12.21-024fbe5032a8d0a7"}], "evidence": "branch-matrix"}, {"id": "CVE-2024-0985", "title": "PostgreSQL non-owner REFRESH MATERIALIZED VIEW CONCURRENTLY executes arbitrary SQL", "url": "https://www.postgresql.org/support/security/CVE-2024-0985/", "score": 8.0, "vector": "AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H", "description": "UPDATE (June 19, 2024) : Added v16 as impacted. Updated description to clarify the attack vector.\n\nLate privilege drop in REFRESH MATERIALIZED VIEW CONCURRENTLY in PostgreSQL allows an object creator to execute arbitrary SQL functions as the command issuer. The command intends to run SQL functions as the owner of the materialized view, enabling safe refresh of untrusted materialized views. The victim is a superuser or member of one of the attacker's roles. The attack requires luring the victim into running REFRESH MATERIALIZED VIEW CONCURRENTLY on the attacker's materialized view.", "description_language": "en", "fixed": "12.18", "fixed_url": "/docs/compare/?release=12.18", "affected": "12", "component": "core server", "mentions": [{"build": "12.18", "version": "12.18", "title": "\u52a0\u5f3a REFRESH MATERIALIZED VIEW CONCURRENTLY \u4e2d\u7684\u5b89\u5168\u9650\u5236", "url": "/docs/compare/?release=12.18#12.18-8363a91ecff35262"}], "evidence": "branch-matrix"}, {"id": "CVE-2023-5870", "title": "Role \"pg_signal_backend\" can signal certain superuser processes", "url": "https://www.postgresql.org/support/security/CVE-2023-5870/", "score": 2.2, "vector": "AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:L", "description": "Documentation says the pg_signal_backend role cannot signal \"a backend owned by a superuser\". On the contrary, it can signal background workers, including the logical replication launcher. It can signal autovacuum workers and the autovacuum launcher. Signaling autovacuum workers and those two launchers provides no meaningful exploit, so exploiting this vulnerability requires a non-core extension with a less-resilient background worker. For example, a non-core background worker that does not auto-restart would experience a denial of service with respect to that particular background worker.\n\nThe PostgreSQL project thanks Hemanth Sandrana and Mahendrakar Srinivasarao for reporting this problem.", "description_language": "en", "fixed": "12.17", "fixed_url": "/docs/compare/?release=12.17", "affected": "12", "component": "core server", "mentions": [{"build": "12.17", "version": "12.17", "title": "\u9632\u6b62 pg_signal_backend \u89d2\u8272\u5411\u540e\u53f0\u5de5\u4f5c\u8fdb\u7a0b\u548c\u81ea\u52a8\u6e05\u7406\u8fdb\u7a0b\u53d1\u9001\u4fe1\u53f7", "url": "/docs/compare/?release=12.17#12.17-5de0c13ef0792005"}], "evidence": "branch-matrix"}, {"id": "CVE-2023-5869", "title": "Buffer overrun from integer overflow in array modification", "url": "https://www.postgresql.org/support/security/CVE-2023-5869/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "While modifying certain SQL array values, missing overflow checks let authenticated database users write arbitrary bytes to a memory area that facilitates arbitrary code execution. Missing overflow checks also let authenticated database users read a wide area of server memory. The CVE-2021-32027 fix covered some attacks of this description, but it missed others.\n\nThe PostgreSQL project thanks Pedro Gallegos for reporting this problem.", "description_language": "en", "fixed": "12.17", "fixed_url": "/docs/compare/?release=12.17", "affected": "12", "component": "core server", "mentions": [{"build": "12.20", "version": "12.20", "title": "\u68c0\u6d4b\u8ba1\u7b97\u65b0\u6570\u7ec4\u7ef4\u5ea6\u65f6\u7684\u53e6\u4e00\u4e2a\u6574\u6570\u6ea2\u51fa\u60c5\u51b5", "url": "/docs/compare/?release=12.20#12.20-9e24737f3cb9daf2"}, {"build": "12.17", "version": "12.17", "title": "\u68c0\u6d4b\u8ba1\u7b97\u65b0\u6570\u7ec4\u7ef4\u5ea6\u65f6\u7684\u6574\u6570\u6ea2\u51fa", "url": "/docs/compare/?release=12.17#12.17-77a934e216e7596b"}], "evidence": "branch-matrix"}, {"id": "CVE-2023-5868", "title": "Memory disclosure in aggregate function calls", "url": "https://www.postgresql.org/support/security/CVE-2023-5868/", "score": 4.3, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "description": "Certain aggregate function calls receiving \"unknown\"-type arguments could disclose bytes of server memory from the end of the \"unknown\"-type value to the next zero byte. One typically gets an \"unknown\"-type value via a string literal having no type designation. We have not confirmed or ruled out viability of attacks that arrange for presence of notable, confidential information in disclosed bytes.\n\nThe PostgreSQL project thanks Jingzhou Fu for reporting this problem.", "description_language": "en", "fixed": "12.17", "fixed_url": "/docs/compare/?release=12.17", "affected": "12", "component": "core server", "mentions": [{"build": "12.17", "version": "12.17", "title": "\u4fee\u590d DISTINCT \"any\" \u805a\u5408\u51fd\u6570\u4e2d\u5bf9\u672a\u77e5\u7c7b\u578b\u53c2\u6570\u7684\u5904\u7406", "url": "/docs/compare/?release=12.17#12.17-98e305aa20a51a8c"}], "evidence": "branch-matrix"}, {"id": "CVE-2023-39417", "title": "Extension script @substitutions@ within quoting allow SQL injection", "url": "https://www.postgresql.org/support/security/CVE-2023-39417/", "score": 7.5, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "An extension script is vulnerable if it uses @extowner@ , @extschema@ , or @extschema:...@ inside a quoting construct (dollar quoting, '' , or \"\" ). No bundled extension is vulnerable. Vulnerable uses do appear in a documentation example and in non-bundled extensions. Hence, the attack prerequisite is an administrator having installed files of a vulnerable, trusted, non-bundled extension. Subject to that prerequisite, this enables an attacker having database-level CREATE privilege to execute arbitrary code as the bootstrap superuser. PostgreSQL will block this attack in the core server, so there's no need to modify individual extensions.\n\nThe PostgreSQL project thanks Micah Gates, Valerie Woolard, Tim Carey-Smith, and Christoph Berg for reporting this problem.", "description_language": "en", "fixed": "12.16", "fixed_url": "/docs/compare/?release=12.16", "affected": "12", "component": "core server", "mentions": [{"build": "12.16", "version": "12.16", "title": "\u5982\u679c\u6a21\u5f0f\u6216\u6240\u6709\u8005\u540d\u79f0\u5305\u542b\u5f15\u53f7\u3001\u53cd\u659c\u6760\u6216\u7f8e\u5143\u7b26\u53f7\uff0c\u5219\u4e0d\u5141\u8bb8\u5c06\u5176\u66ff\u6362\u5230\u6269\u5c55\u811a\u672c\u4e2d", "url": "/docs/compare/?release=12.16#12.16-9cd59e5c454decd6"}], "evidence": "branch-matrix"}, {"id": "CVE-2023-2455", "title": "Row security policies disregard user ID changes after inlining", "url": "https://www.postgresql.org/support/security/CVE-2023-2455/", "score": 4.2, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N", "description": "While CVE-2016-2193 fixed most interaction between row security and user ID changes, it missed a scenario involving function inlining. This leads to potentially incorrect policies being applied in cases where role-specific policies are used and a given query is planned under one role and then executed under other roles. This scenario can happen under security definer functions or when a common user and query is planned initially and then re-used across multiple SET ROLE s. Applying an incorrect policy may permit a user to complete otherwise-forbidden reads and modifications. This affects only databases that have used CREATE POLICY to define a row security policy.\n\nThe PostgreSQL project thanks Wolfgang Walther for reporting this problem.", "description_language": "en", "fixed": "12.15", "fixed_url": "/docs/compare/?release=12.15", "affected": "12", "component": "core server", "mentions": [{"build": "12.15", "version": "12.15", "title": "\u5728\u5185\u8054\u96c6\u5408\u8fd4\u56de\u51fd\u6570\u540e\u6b63\u786e\u6267\u884c\u884c\u7ea7\u5b89\u5168\u7b56\u7565", "url": "/docs/compare/?release=12.15#12.15-9415a6aefb232162"}], "evidence": "branch-matrix"}, {"id": "CVE-2023-2454", "title": "CREATE SCHEMA ... schema_element defeats protective search_path changes", "url": "https://www.postgresql.org/support/security/CVE-2023-2454/", "score": 7.2, "vector": "AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H", "description": "This enabled an attacker having database-level CREATE privilege to execute arbitrary code as the bootstrap superuser. Database owners have that right by default, and explicit grants may extend it to other users.\n\nThe PostgreSQL project thanks Alexander Lakhin for reporting this problem.", "description_language": "en", "fixed": "12.15", "fixed_url": "/docs/compare/?release=12.15", "affected": "12", "component": "core server", "mentions": [{"build": "12.15", "version": "12.15", "title": "\u9632\u6b62 CREATE SCHEMA \u7ed5\u8fc7 search_path \u7684\u66f4\u6539", "url": "/docs/compare/?release=12.15#12.15-c11ec7acdcc3d380"}], "evidence": "branch-matrix"}, {"id": "CVE-2022-41862", "title": "Client memory disclosure when connecting, with Kerberos, to modified server", "url": "https://www.postgresql.org/support/security/CVE-2022-41862/", "score": 3.7, "vector": "AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N", "description": "A modified, unauthenticated server can send an unterminated string during the establishment of Kerberos transport encryption. When a libpq client application has a Kerberos credential cache and doesn't explicitly disable option gssencmode , a server can cause libpq to over-read and report an error message containing uninitialized bytes from and following its receive buffer. If libpq's caller somehow makes that message accessible to the attacker, this achieves a disclosure of the over-read bytes. We have not confirmed or ruled out viability of attacks that arrange for a crash or for presence of notable, confidential information in disclosed bytes.\n\nThe PostgreSQL project thanks Jacob Champion for reporting this problem.", "description_language": "en", "fixed": "12.14", "fixed_url": "/docs/compare/?release=12.14", "affected": "12", "component": "client", "mentions": [{"build": "12.14", "version": "12.14", "title": "libpq \u5728 GSSAPI \u4f20\u8f93\u52a0\u5bc6\u521d\u59cb\u5316\u5931\u8d25\u540e\u53ef\u80fd\u6cc4\u6f0f\u5185\u5b58\u5185\u5bb9", "url": "/docs/compare/?release=12.14#12.14-3713e48c990849a8"}], "evidence": "branch-matrix"}, {"id": "CVE-2022-2625", "title": "Extension scripts replace objects not belonging to the extension", "url": "https://www.postgresql.org/support/security/CVE-2022-2625/", "score": 7.1, "vector": "AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H", "description": "Some extensions use CREATE OR REPLACE or CREATE IF NOT EXISTS commands. Some don't adhere to the documented rule to target only objects known to be extension members already. An attack requires permission to create non-temporary objects in at least one schema, ability to lure or wait for an administrator to create or update an affected extension in that schema, and ability to lure or wait for a victim to use the object targeted in CREATE OR REPLACE or CREATE IF NOT EXISTS . Given all three prerequisites, the attacker can run arbitrary code as the victim role, which may be a superuser. Known-affected extensions include both PostgreSQL-bundled and non-bundled extensions. PostgreSQL is blocking this attack in the core server, so there's no need to modify individual extensions.\n\nThe PostgreSQL project thanks Sven Klemm for reporting this problem.", "description_language": "en", "fixed": "12.12", "fixed_url": "/docs/compare/?release=12.12", "affected": "12", "component": "core server", "mentions": [{"build": "12.12", "version": "12.12", "title": "\u4e0d\u5141\u8bb8\u6269\u5c55\u811a\u672c\u66ff\u6362\u4e0d\u5c5e\u4e8e\u8be5\u6269\u5c55\u7684\u5df2\u6709\u5bf9\u8c61", "url": "/docs/compare/?release=12.12#12.12-adff0755b5cd079c"}], "evidence": "branch-matrix"}, {"id": "CVE-2022-1552", "title": "Autovacuum, REINDEX, and others omit \"security restricted operation\" sandbox", "url": "https://www.postgresql.org/support/security/CVE-2022-1552/", "score": 8.8, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "Autovacuum, REINDEX , CREATE INDEX , REFRESH MATERIALIZED VIEW , CLUSTER , and pg_amcheck made incomplete efforts to operate safely when a privileged user is maintaining another user's objects. Those commands activated relevant protections too late or not at all. An attacker having permission to create non-temp objects in at least one schema could execute arbitrary SQL functions under a superuser identity.\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, not manually running the above commands, and not restoring from output of the pg_dump command. Performance may degrade quickly under this workaround. VACUUM is safe, and all commands are fine when a trusted user owns the target object.\n\nThe PostgreSQL project thanks Alexander Lakhin for reporting this problem.", "description_language": "en", "fixed": "12.11", "fixed_url": "/docs/compare/?release=12.11", "affected": "12", "component": "core server", "mentions": [{"build": "12.12", "version": "12.12", "title": "\u4fee\u590d CREATE INDEX \u4e2d\u7684\u6743\u9650\u68c0\u67e5", "url": "/docs/compare/?release=12.12#12.12-721312cec0694544"}, {"build": "12.11", "version": "12.11", "title": "\u5c06\u66f4\u591a\u64cd\u4f5c\u9650\u5236\u5728\u201c\u5b89\u5168\u53d7\u9650\u64cd\u4f5c\u201d\u6c99\u7bb1\u5185", "url": "/docs/compare/?release=12.11#12.11-3bd03835132773e3"}], "evidence": "branch-matrix"}, {"id": "CVE-2021-3677", "title": "Memory disclosure in certain queries", "url": "https://www.postgresql.org/support/security/CVE-2021-3677/", "score": 6.5, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "description": "A purpose-crafted query can read arbitrary bytes of server memory. In the default configuration, any authenticated database user can complete this attack at will. The attack does not require the ability to create objects. If server settings include max_worker_processes=0 , the known versions of this attack are infeasible. However, undiscovered variants of the attack may be independent of that setting.", "description_language": "en", "fixed": "12.8", "fixed_url": "/docs/compare/?release=12.8", "affected": "12", "component": "core server", "mentions": [{"build": "12.8", "version": "12.8", "title": "\u4fee\u590d\u91cd\u590d\u5e94\u7528\u6295\u5f71\u6b65\u9aa4\u65f6\u4ea7\u751f\u9519\u8bef\u8ba1\u5212\u7684\u95ee\u9898", "url": "/docs/compare/?release=12.8#12.8-475ce7ff31778db0"}], "evidence": "branch-matrix"}, {"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": "12.8", "version": "12.8", "title": "\u66f4\u5f7b\u5e95\u5730\u7981\u6b62 SSL \u91cd\u65b0\u534f\u5546", "url": "/docs/compare/?release=12.8#12.8-e43fe95675839650"}], "evidence": "release-note-mention"}, {"id": "CVE-2021-3393", "title": "Partition constraint violation errors leak values of denied columns", "url": "https://www.postgresql.org/support/security/CVE-2021-3393/", "score": 3.1, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N", "description": "A user having an UPDATE privilege on a partitioned table but lacking the SELECT privilege on some column may be able to acquire denied-column values from an error message. This is similar to CVE-2014-8161 , but the conditions to exploit are more rare.\n\nThe PostgreSQL project thanks Heikki Linnakangas for reporting this problem.", "description_language": "en", "fixed": "12.6", "fixed_url": "/docs/compare/?release=12.6", "affected": "12", "component": "core server", "mentions": [{"build": "12.6", "version": "12.6", "title": "\u4fee\u590d\u8fdd\u53cd\u7ea6\u675f\u7684\u9519\u8bef\u6d88\u606f\u4e2d\u7684\u4fe1\u606f\u6cc4\u6f0f", "url": "/docs/compare/?release=12.6#12.6-d69aef7b86492013"}], "evidence": "branch-matrix"}, {"id": "CVE-2021-32029", "title": "Memory disclosure in partitioned-table UPDATE ... RETURNING", "url": "https://www.postgresql.org/support/security/CVE-2021-32029/", "score": 6.5, "vector": "AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "description": "Using an UPDATE ... RETURNING on a purpose-crafted partitioned 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 typically cannot use this attack at will.\n\nThe PostgreSQL project thanks Tom Lane for reporting this problem.", "description_language": "en", "fixed": "12.7", "fixed_url": "/docs/compare/?release=12.7", "affected": "12", "component": "core server", "mentions": [{"build": "12.7", "version": "12.7", "title": "\u4fee\u590d\u6d89\u53ca\u8fde\u63a5\u7684\u8de8\u5206\u533a\u66f4\u65b0\u4e2d UPDATE ... RETURNING \u8f93\u51fa\u53ef\u80fd\u8ba1\u7b97\u4e0d\u6b63\u786e\u7684\u95ee\u9898", "url": "/docs/compare/?release=12.7#12.7-95661281b11218c0"}], "evidence": "branch-matrix"}, {"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": "12.7", "fixed_url": "/docs/compare/?release=12.7", "affected": "12", "component": "core server", "mentions": [{"build": "12.7", "version": "12.7", "title": "\u4fee\u590d INSERT ... ON CONFLICT ... UPDATE \u76ee\u6807\u5217\u8868\u4e2d\u5bf9 \u201cjunk\u201d \u5217\u7684\u9519\u8bef\u5904\u7406", "url": "/docs/compare/?release=12.7#12.7-99371ae3858378c5"}], "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": "12.7", "fixed_url": "/docs/compare/?release=12.7", "affected": "12", "component": "core server", "mentions": [{"build": "12.7", "version": "12.7", "title": "\u9632\u6b62\u6570\u7ec4\u4e0b\u6807\u8ba1\u7b97\u4e2d\u7684\u6574\u6570\u6ea2\u51fa", "url": "/docs/compare/?release=12.7#12.7-ac73d078ce65a7fd"}], "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": "12.9", "fixed_url": "/docs/compare/?release=12.9", "affected": "12", "component": "client", "mentions": [{"build": "12.9", "version": "12.9", "title": "\u4f7f libpq \u5728 SSL \u6216 GSS \u52a0\u5bc6\u63e1\u624b\u540e\u62d2\u7edd\u591a\u4f59\u7684\u6570\u636e", "url": "/docs/compare/?release=12.9#12.9-1981162a570e17a7"}], "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": "12.9", "fixed_url": "/docs/compare/?release=12.9", "affected": "12", "component": "core server", "mentions": [{"build": "12.9", "version": "12.9", "title": "\u4f7f\u670d\u52a1\u5668\u5728 SSL \u6216 GSS \u52a0\u5bc6\u63e1\u624b\u540e\u62d2\u7edd\u591a\u4f59\u7684\u6570\u636e", "url": "/docs/compare/?release=12.9#12.9-363608434205a801"}, {"build": "12.9", "version": "12.9", "title": "\u4f7f libpq \u5728 SSL \u6216 GSS \u52a0\u5bc6\u63e1\u624b\u540e\u62d2\u7edd\u591a\u4f59\u7684\u6570\u636e", "url": "/docs/compare/?release=12.9#12.9-1981162a570e17a7"}], "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": "12.5", "fixed_url": "/docs/compare/?release=12.5", "affected": "12", "component": "client", "mentions": [{"build": "12.5", "version": "12.5", "title": "\u9632\u6b62 psql \u7684 \\gset \u547d\u4ee4\u4fee\u6539\u5177\u6709\u7279\u6b8a\u5904\u7406\u65b9\u5f0f\u7684\u53d8\u91cf", "url": "/docs/compare/?release=12.5#12.5-729d850c2da92e5e"}], "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": "12.5", "fixed_url": "/docs/compare/?release=12.5", "affected": "12", "component": "core server", "mentions": [{"build": "12.5", "version": "12.5", "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=12.5#12.5-58ffc2453b836b7c"}], "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": "12.5", "fixed_url": "/docs/compare/?release=12.5", "affected": "12", "component": "client", "mentions": [{"build": "12.5", "version": "12.5", "title": "\u4fee\u590d pg_dump\u3001pg_restore\u3001clusterdb\u3001reindexdb \u548c vacuumdb \u5bf9\u590d\u6742\u8fde\u63a5\u5b57\u7b26\u4e32\u53c2\u6570\u7684\u4f7f\u7528", "url": "/docs/compare/?release=12.5#12.5-66ca83b99f74f9b0"}, {"build": "12.5", "version": "12.5", "title": "\u5f53 psql \u7684 \\connect \u547d\u4ee4\u590d\u7528\u8fde\u63a5\u53c2\u6570\u65f6\uff0c\u786e\u4fdd\u590d\u7528\u5148\u524d\u8fde\u63a5\u5b57\u7b26\u4e32\u4e2d\u6240\u6709\u672a\u88ab\u8986\u76d6\u7684\u53c2\u6570", "url": "/docs/compare/?release=12.5#12.5-3c25610dd990145e"}], "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": "12.2", "fixed_url": "/docs/compare/?release=12.2", "affected": "12", "component": "core server", "mentions": [{"build": "12.2", "version": "12.2", "title": "\u4e3a ALTER ... DEPENDS ON EXTENSION \u8865\u4e0a\u7f3a\u5931\u7684\u6743\u9650\u68c0\u67e5", "url": "/docs/compare/?release=12.2#12.2-aa2ddd8e29f6283e"}], "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": "12.4", "fixed_url": "/docs/compare/?release=12.4", "affected": "12", "component": "core server", "mentions": [{"build": "12.4", "version": "12.4", "title": "\u63d0\u9ad8 contrib \u6a21\u5757\u5b89\u88c5\u811a\u672c\u7684\u5b89\u5168\u6027", "url": "/docs/compare/?release=12.4#12.4-5dfe16e1743c0c3d"}], "evidence": "branch-matrix"}, {"id": "CVE-2020-14349", "title": "Uncontrolled search path element in logical replication", "url": "https://www.postgresql.org/support/security/CVE-2020-14349/", "score": 7.5, "vector": "AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H", "description": "The PostgreSQL search_path setting determines schemas searched for tables, functions, operators, etc. The CVE-2018-1058 fix caused most PostgreSQL-provided client applications to sanitize search_path , but logical replication continued to leave search_path unchanged. Users of a replication publisher or subscriber database can create objects in the public schema and harness them to execute arbitrary SQL functions under the identity running replication, often a superuser. Installations having adopted a documented secure schema usage pattern are not vulnerable.\n\nThe PostgreSQL project thanks Noah Misch for reporting this problem.", "description_language": "en", "fixed": "12.4", "fixed_url": "/docs/compare/?release=12.4", "affected": "12", "component": "core server", "mentions": [{"build": "12.4", "version": "12.4", "title": "\u5728\u903b\u8f91\u590d\u5236 WAL \u53d1\u9001\u8fdb\u7a0b\u548c\u5e94\u7528\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u8bbe\u7f6e\u5b89\u5168\u7684 search_path", "url": "/docs/compare/?release=12.4#12.4-5cf18c813b9149d7"}], "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": "12.3", "fixed_url": "/docs/compare/?release=12.3", "affected": "12", "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": "12.1", "fixed_url": "/docs/compare/?release=12.1", "affected": "12", "component": "packaging", "mentions": [], "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": "", "fixed_url": "", "affected": "", "component": "client", "mentions": [{"build": "12.4", "version": "12.4", "title": "\u5728\u903b\u8f91\u590d\u5236 WAL \u53d1\u9001\u8fdb\u7a0b\u548c\u5e94\u7528\u5de5\u4f5c\u8fdb\u7a0b\u4e2d\u8bbe\u7f6e\u5b89\u5168\u7684 search_path", "url": "/docs/compare/?release=12.4#12.4-5cf18c813b9149d7"}, {"build": "12.4", "version": "12.4", "title": "\u63d0\u9ad8 contrib \u6a21\u5757\u5b89\u88c5\u811a\u672c\u7684\u5b89\u5168\u6027", "url": "/docs/compare/?release=12.4#12.4-5dfe16e1743c0c3d"}], "evidence": "release-note-mention"}, {"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": "", "fixed_url": "", "affected": "", "component": "core server", "mentions": [{"build": "12.2", "version": "12.2", "title": "\u5982\u679c\u7528\u6237\u80fd\u591f\u8bfb\u53d6\u67e5\u8be2\u4e2d\u5b9e\u9645\u6307\u5b9a\u7684\u8868\u7684\u76f8\u5e94\u5217\uff0c\u5219\u5141\u8bb8\u89c4\u5212\u5668\u5bf9\u5b50\u8868\u7edf\u8ba1\u4fe1\u606f\u5e94\u7528\u53ef\u80fd\u6cc4\u6f0f\u4fe1\u606f\u7684\u6d4b\u8bd5", "url": "/docs/compare/?release=12.2#12.2-f4fac18590db9602"}], "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": "12.8", "version": "12.8", "title": "\u5728 psql \u548c\u5176\u4ed6\u5ba2\u6237\u7aef\u7a0b\u5e8f\u4e2d\uff0c\u907f\u514d\u5904\u7406\u7f16\u7801\u65e0\u6548\u7684\u6570\u636e\u65f6\u8d8a\u8fc7\u5b57\u7b26\u4e32\u672b\u5c3e", "url": "/docs/compare/?release=12.8#12.8-9734c4cf0ecf04d6"}], "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": 14635876, "url": "/files/documentation/pdf/12/postgresql-12-A4.pdf"}, {"label": "US Letter PDF", "bytes": 14606894, "url": "/files/documentation/pdf/12/postgresql-12-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": ""}]}