{"kind": "language", "major": "18", "item": {"slug": "pltclu", "name": "pltclu", "name_zh": "", "category": "PL/Tcl", "summary": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00", "aliases": [], "content_hash": "40ee828f82dfaee951f0f830489be9e610e67542067268cc774f1da1b60b5611", "versions": {"10": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/10/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/10/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/10/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/10/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/10/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/10/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/10/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/10/pltcl-overview.html", "label": "pltcl-overview"}, {"url": "/docs/10/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/10/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/10/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "10.23", "major": "10", "channel": "historical", "revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9", "source_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9", "catalog_fingerprint": "691be281b476dde4374d7f805b2bacc2e75bdef40f1e9d3d42e91f97fe95cfd0"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, {"url": "https://pg.center/docs/10/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 10 English manual", "sha256": "2df6e5d2ee2a445d19335fe73df55bcd9f135eedd9f243c8f6ec2cade7d0bff0", "language": "en", "original_url": "/docs/10/pltcl-overview.html"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE PROCEDURAL LANGUAGE pltclu;\n\nCOMMENT ON PROCEDURAL LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"], "manual_html": "<div class=\"sect1\" id=\"PLTCL-OVERVIEW\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">43.1. \u6982\u8ff0</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">PL/Tcl \u63d0\u4f9b\u4e86 C \u8bed\u8a00\u51fd\u6570\u4f5c\u8005\u6240\u62e5\u6709\u7684\u5927\u591a\u6570\u80fd\u529b\uff0c\u4f46\u6709\u5c11\u91cf\u9650\u5236\uff0c\u540c\u65f6\u589e\u52a0\u4e86 Tcl \u5f3a\u5927\u7684\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002</p>\n<p lang=\"zh\">\u4e00\u4e2a\u6709\u76ca\u7684\u9650\u5236\u662f\uff1a\u6240\u6709\u64cd\u4f5c\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u4e0a\u4e0b\u6587\u7684\u5b89\u5168\u8fb9\u754c\u5185\u6267\u884c\u3002\u9664\u5b89\u5168 Tcl \u7684\u6709\u9650\u547d\u4ee4\u96c6\u5916\uff0c\u4ec5\u63d0\u4f9b\u5c11\u91cf\u547d\u4ee4\uff0c\u7528\u4e8e\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u6216\u901a\u8fc7 elog() \u62a5\u544a\u6d88\u606f\u3002PL/Tcl \u65e0\u6cd5\u50cf C \u51fd\u6570\u90a3\u6837\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\uff0c\u4e5f\u65e0\u6cd5\u4ee5 PostgreSQL \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u65e0\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u6b64\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f1a\u8d4b\u4e88\u4ed6\u4eec\u4e0d\u53d7\u9650\u5236\u7684\u6743\u9650\u3002</p>\n<p lang=\"zh\">\u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff1a\u4e0d\u80fd\u7528 Tcl \u51fd\u6570\u521b\u5efa\u65b0\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\uff0f\u8f93\u51fa\u51fd\u6570\u3002</p>\n<p lang=\"zh\">\u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u53d1\u9001\u90ae\u4ef6\u7684 Tcl \u51fd\u6570\u3002\u4e3a\u6b64\uff0cPL/Tcl \u63d0\u4f9b\u4e86\u540d\u4e3a PL/TclU \u7684\u53d8\u4f53\uff0c\u5373\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\u3002\u9664\u4f7f\u7528\u5b8c\u6574 Tcl \u89e3\u91ca\u5668\u5916\uff0c\u4e24\u8005\u8bed\u8a00\u5b8c\u5168\u76f8\u540c\u3002PL/TclU \u5fc5\u987b\u5b89\u88c5\u4e3a\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00\uff0c\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u7528\u5b83\u521b\u5efa\u51fd\u6570\u3002PL/TclU \u51fd\u6570\u7684\u4f5c\u8005\u5fc5\u987b\u786e\u4fdd\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u4e8e\u6267\u884c\u975e\u9884\u671f\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u6267\u884c\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u6267\u884c\u7684\u4efb\u4f55\u64cd\u4f5c\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u5728\u5b89\u88c5\u8fc7\u7a0b\u7684\u914d\u7f6e\u6b65\u9aa4\u4e2d\u6307\u5b9a\u4e86 Tcl \u652f\u6301\uff0cPL/Tcl \u548c PL/TclU \u8c03\u7528\u5904\u7406\u5668\u7684\u5171\u4eab\u5bf9\u8c61\u4ee3\u7801\u4f1a\u81ea\u52a8\u6784\u5efa\uff0c\u5e76\u5b89\u88c5\u5230 PostgreSQL \u5e93\u76ee\u5f55\u4e2d\u3002\u8981\u5728\u7279\u5b9a\u6570\u636e\u5e93\u4e2d\u5b89\u88c5 PL/Tcl \u548c\uff0f\u6216 PL/TclU\uff0c\u53ef\u4f7f\u7528 CREATE EXTENSION \u547d\u4ee4\uff0c\u4f8b\u5982 CREATE EXTENSION pltcl \u6216 CREATE EXTENSION pltclu\u3002</p>\n</div>", "manual_path": "/docs/10/pltcl-overview.html", "localization": {"status": "complete", "sources": [{"url": "/docs/10/pltcl-config.html", "method": "same-major semantic node", "sha256": "80c8a85d8f262ea873d482ac8d30d1e2d7df811c50f1b2ad7607b8e5f2c1304f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-data.html", "method": "same-major semantic node", "sha256": "7eaf9f29b9c1f1687a84ff10631b1c12ec019b25b85184036dd05ba1a7d0bf35", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "e9c0b8faba119abb3b2c5f598f84f63b46d823ef06d5ce03a3406a9cd38d6999", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "881b42137fb432b3af2c1a47389ebc0f12db0807c789f048236924ebbe6c7956", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "c17755c912919bb597333dfa628526056f1ceb274eb2596079b13f19aab9197a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-functions.html", "method": "same-major semantic node", "sha256": "e8d8c3ad34c0980b977e482b09f7eefe09a3735a732062de753f94ad23b1a0b9", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-global.html", "method": "same-major semantic node", "sha256": "082515d98f082fdb76756a4ffa6714657dfa32cc522f77845be051545f2c630f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "dceb3117d77a15e6494782f1515a39f3d7179b0340a4eb12d50ce4c64df973be", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "ed444410b351fa5f015e7e339e34ae01b97b177fffecbaf2d3a57feba13bff24", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/10/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "b01e1db4be116982bd60d022040bbfd094c3a86814337339848c71493cf75eb0", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/10/description/0": "PL/TclU untrusted procedural language", "/versions/10/facts/0/label": "Kind", "/versions/10/facts/0/value": "Bundled procedural-language variant", "/versions/10/facts/1/label": "Family", "/versions/10/facts/2/label": "Trusted", "/versions/10/facts/3/label": "Handler", "/versions/10/facts/4/label": "Library", "/versions/10/facts/5/label": "Default version", "/versions/10/facts/6/label": "Module pathname", "/versions/10/facts/7/label": "Comment", "/versions/10/facts/7/value": "PL/TclU untrusted procedural language", "/versions/10/related/0/label": "pltcl-config", "/versions/10/related/1/label": "pltcl-data", "/versions/10/related/2/label": "pltcl-dbaccess", "/versions/10/related/3/label": "pltcl-error-handling", "/versions/10/related/4/label": "pltcl-event-trigger", "/versions/10/related/5/label": "pltcl-functions", "/versions/10/related/6/label": "pltcl-global", "/versions/10/related/8/label": "pltcl-procnames", "/versions/10/related/9/label": "pltcl-subtransactions", "/versions/10/related/10/label": "pltcl-trigger", "/versions/10/sections/0/title": "Installation definition from the matching source archive", "/versions/10/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "8b2d577789d85c1dfdae68d7c920c9640fdd62b8e5aff2c00777bc799d6641b8"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "b7c8527b81a5f6eb6b04ed1ad0d41b1f8a44eec84a754c5289969ece93996ef1"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh"}, "11": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/11/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/11/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/11/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/11/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/11/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/11/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/11/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/11/pltcl-overview.html", "label": "pltcl-overview"}, {"url": "/docs/11/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/11/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/11/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/11/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "11.22", "major": "11", "channel": "historical", "revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0", "source_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0", "catalog_fingerprint": "8f21f4444b7f68923f4762af0eb7937fa2907026e91249483e79050de012c901"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, {"url": "https://pg.center/docs/11/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 11 English manual", "sha256": "23152ba386b19fe4e6e11d2b20933742b23ee8474c9300b9d8abc3cfd32ed400", "language": "en", "original_url": "/docs/11/pltcl-overview.html"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE PROCEDURAL LANGUAGE pltclu;\n\nCOMMENT ON PROCEDURAL LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"], "manual_html": "<div class=\"sect1\" id=\"PLTCL-OVERVIEW\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">44.1. \u6982\u8ff0</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">PL/Tcl \u63d0\u4f9b\u4e86 C \u8bed\u8a00\u51fd\u6570\u4f5c\u8005\u6240\u62e5\u6709\u7684\u5927\u591a\u6570\u80fd\u529b\uff0c\u4f46\u6709\u5c11\u91cf\u9650\u5236\uff0c\u540c\u65f6\u589e\u52a0\u4e86 Tcl \u5f3a\u5927\u7684\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002</p>\n<p lang=\"zh\">\u4e00\u4e2a\u6709\u76ca\u7684\u9650\u5236\u662f\uff1a\u6240\u6709\u64cd\u4f5c\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u4e0a\u4e0b\u6587\u7684\u5b89\u5168\u8fb9\u754c\u5185\u6267\u884c\u3002\u9664\u5b89\u5168 Tcl \u7684\u6709\u9650\u547d\u4ee4\u96c6\u5916\uff0c\u4ec5\u63d0\u4f9b\u5c11\u91cf\u547d\u4ee4\uff0c\u7528\u4e8e\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u6216\u901a\u8fc7 elog() \u62a5\u544a\u6d88\u606f\u3002PL/Tcl \u65e0\u6cd5\u50cf C \u51fd\u6570\u90a3\u6837\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\uff0c\u4e5f\u65e0\u6cd5\u4ee5 PostgreSQL \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u65e0\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u6b64\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f1a\u8d4b\u4e88\u4ed6\u4eec\u4e0d\u53d7\u9650\u5236\u7684\u6743\u9650\u3002</p>\n<p lang=\"zh\">\u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff1a\u4e0d\u80fd\u7528 Tcl \u51fd\u6570\u521b\u5efa\u65b0\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\uff0f\u8f93\u51fa\u51fd\u6570\u3002</p>\n<p lang=\"zh\">\u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u53d1\u9001\u90ae\u4ef6\u7684 Tcl \u51fd\u6570\u3002\u4e3a\u6b64\uff0cPL/Tcl \u63d0\u4f9b\u4e86\u540d\u4e3a PL/TclU \u7684\u53d8\u4f53\uff0c\u5373\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\u3002\u9664\u4f7f\u7528\u5b8c\u6574 Tcl \u89e3\u91ca\u5668\u5916\uff0c\u4e24\u8005\u8bed\u8a00\u5b8c\u5168\u76f8\u540c\u3002PL/TclU \u5fc5\u987b\u5b89\u88c5\u4e3a\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00\uff0c\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u7528\u5b83\u521b\u5efa\u51fd\u6570\u3002PL/TclU \u51fd\u6570\u7684\u4f5c\u8005\u5fc5\u987b\u786e\u4fdd\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u4e8e\u6267\u884c\u975e\u9884\u671f\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u6267\u884c\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u6267\u884c\u7684\u4efb\u4f55\u64cd\u4f5c\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u5728\u5b89\u88c5\u8fc7\u7a0b\u7684\u914d\u7f6e\u6b65\u9aa4\u4e2d\u6307\u5b9a\u4e86 Tcl \u652f\u6301\uff0cPL/Tcl \u548c PL/TclU \u8c03\u7528\u5904\u7406\u5668\u7684\u5171\u4eab\u5bf9\u8c61\u4ee3\u7801\u4f1a\u81ea\u52a8\u6784\u5efa\uff0c\u5e76\u5b89\u88c5\u5230 PostgreSQL \u5e93\u76ee\u5f55\u4e2d\u3002\u8981\u5728\u7279\u5b9a\u6570\u636e\u5e93\u4e2d\u5b89\u88c5 PL/Tcl \u548c\uff0f\u6216 PL/TclU\uff0c\u53ef\u4f7f\u7528 CREATE EXTENSION \u547d\u4ee4\uff0c\u4f8b\u5982 CREATE EXTENSION pltcl \u6216 CREATE EXTENSION pltclu\u3002</p>\n</div>", "manual_path": "/docs/11/pltcl-overview.html", "localization": {"status": "complete", "sources": [{"url": "/docs/11/pltcl-config.html", "method": "same-major semantic node", "sha256": "0ad2a6cbc35762bcaeff4376cd0e0925debabdc6da42f15ca709f11fde6002ce", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-data.html", "method": "same-major semantic node", "sha256": "46aef91362643dca9c121d8b898a42e03ffc1d5bbd050571880fb2eec6b90853", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "0c9fd980431782c106840ad5cf20bca4b8d75cb4eaa9ee46ea0fdf33d41ec415", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "383b0a1a22f68dfc9b5fc3588c8be6005bb35cc4bde0c7c7227ef105f3775c80", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "7ad8d96bfdcba409c38bca6621d1e99135f713bb0c04e16f3e85c7d8795ac61a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-functions.html", "method": "same-major semantic node", "sha256": "bc77a8ccc437395d171951aa6f894c7acffacbce865a28cd9e480e441f6f6cff", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-global.html", "method": "same-major semantic node", "sha256": "cea15a633121e1cfd620f78542107d9aa2dd6389fd35a430f90e0e42a2541a1d", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "b8d4ccc4a96d17486ee7c7411a2e44a78d61c7ab8800bcc044a48b31738bf3d8", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "de6f2d981fdad73db307839bfe81a86effda97ae5224f295d17d00e7d9546562", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "439e473b95d162fe6f96b27dbd50214830f48f77246f77d846d89b617299c8a9", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/11/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "4fca18e6c77983617ec9dc9ec1e065d15372044a220dfe413a571bc293697338", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/11/description/0": "PL/TclU untrusted procedural language", "/versions/11/facts/0/label": "Kind", "/versions/11/facts/0/value": "Bundled procedural-language variant", "/versions/11/facts/1/label": "Family", "/versions/11/facts/2/label": "Trusted", "/versions/11/facts/3/label": "Handler", "/versions/11/facts/4/label": "Library", "/versions/11/facts/5/label": "Default version", "/versions/11/facts/6/label": "Module pathname", "/versions/11/facts/7/label": "Comment", "/versions/11/facts/7/value": "PL/TclU untrusted procedural language", "/versions/11/related/0/label": "pltcl-config", "/versions/11/related/1/label": "pltcl-data", "/versions/11/related/2/label": "pltcl-dbaccess", "/versions/11/related/3/label": "pltcl-error-handling", "/versions/11/related/4/label": "pltcl-event-trigger", "/versions/11/related/5/label": "pltcl-functions", "/versions/11/related/6/label": "pltcl-global", "/versions/11/related/8/label": "pltcl-procnames", "/versions/11/related/9/label": "pltcl-subtransactions", "/versions/11/related/10/label": "pltcl-transactions", "/versions/11/related/11/label": "pltcl-trigger", "/versions/11/sections/0/title": "Installation definition from the matching source archive", "/versions/11/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "450d272ff7b7c19b4c8c461dee9be8bc795f5e3af62476bfc130c0781e7ba21f"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "b7c8527b81a5f6eb6b04ed1ad0d41b1f8a44eec84a754c5289969ece93996ef1"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh"}, "12": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/12/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/12/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/12/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/12/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/12/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/12/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/12/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/12/pltcl-overview.html", "label": "pltcl-overview"}, {"url": "/docs/12/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/12/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/12/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/12/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "12.22", "major": "12", "channel": "historical", "revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b", "source_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b", "catalog_fingerprint": "9f857f4ee4875f9c7de6bfc9df4b757dec8b3a0bb88eadb519c7bd267bd56149"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, {"url": "https://pg.center/docs/12/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 12 English manual", "sha256": "7b095ed70fc9f919b487d6d1c0db5cc886c3d2df0d24a546a51705e1efe03eb1", "language": "en", "original_url": "/docs/12/pltcl-overview.html"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE LANGUAGE pltclu;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"], "manual_html": "<div class=\"sect1\" id=\"PLTCL-OVERVIEW\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">43.1. \u6982\u8ff0</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">PL/Tcl \u63d0\u4f9b\u4e86 C \u8bed\u8a00\u51fd\u6570\u4f5c\u8005\u6240\u62e5\u6709\u7684\u5927\u591a\u6570\u80fd\u529b\uff0c\u4f46\u6709\u5c11\u91cf\u9650\u5236\uff0c\u540c\u65f6\u589e\u52a0\u4e86 Tcl \u5f3a\u5927\u7684\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002</p>\n<p lang=\"zh\">\u4e00\u4e2a\u6709\u76ca\u7684\u9650\u5236\u662f\uff1a\u6240\u6709\u64cd\u4f5c\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u4e0a\u4e0b\u6587\u7684\u5b89\u5168\u8fb9\u754c\u5185\u6267\u884c\u3002\u9664\u5b89\u5168 Tcl \u7684\u6709\u9650\u547d\u4ee4\u96c6\u5916\uff0c\u4ec5\u63d0\u4f9b\u5c11\u91cf\u547d\u4ee4\uff0c\u7528\u4e8e\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u6216\u901a\u8fc7 elog() \u62a5\u544a\u6d88\u606f\u3002PL/Tcl \u65e0\u6cd5\u50cf C \u51fd\u6570\u90a3\u6837\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\uff0c\u4e5f\u65e0\u6cd5\u4ee5 PostgreSQL \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u65e0\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u6b64\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f1a\u8d4b\u4e88\u4ed6\u4eec\u4e0d\u53d7\u9650\u5236\u7684\u6743\u9650\u3002</p>\n<p lang=\"zh\">\u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff1a\u4e0d\u80fd\u7528 Tcl \u51fd\u6570\u521b\u5efa\u65b0\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\uff0f\u8f93\u51fa\u51fd\u6570\u3002</p>\n<p lang=\"zh\">\u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u53d1\u9001\u90ae\u4ef6\u7684 Tcl \u51fd\u6570\u3002\u4e3a\u6b64\uff0cPL/Tcl \u63d0\u4f9b\u4e86\u540d\u4e3a PL/TclU \u7684\u53d8\u4f53\uff0c\u5373\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\u3002\u9664\u4f7f\u7528\u5b8c\u6574 Tcl \u89e3\u91ca\u5668\u5916\uff0c\u4e24\u8005\u8bed\u8a00\u5b8c\u5168\u76f8\u540c\u3002PL/TclU \u5fc5\u987b\u5b89\u88c5\u4e3a\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00\uff0c\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u7528\u5b83\u521b\u5efa\u51fd\u6570\u3002PL/TclU \u51fd\u6570\u7684\u4f5c\u8005\u5fc5\u987b\u786e\u4fdd\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u4e8e\u6267\u884c\u975e\u9884\u671f\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u6267\u884c\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u6267\u884c\u7684\u4efb\u4f55\u64cd\u4f5c\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u5728\u5b89\u88c5\u8fc7\u7a0b\u7684\u914d\u7f6e\u6b65\u9aa4\u4e2d\u6307\u5b9a\u4e86 Tcl \u652f\u6301\uff0cPL/Tcl \u548c PL/TclU \u8c03\u7528\u5904\u7406\u5668\u7684\u5171\u4eab\u5bf9\u8c61\u4ee3\u7801\u4f1a\u81ea\u52a8\u6784\u5efa\uff0c\u5e76\u5b89\u88c5\u5230 PostgreSQL \u5e93\u76ee\u5f55\u4e2d\u3002\u8981\u5728\u7279\u5b9a\u6570\u636e\u5e93\u4e2d\u5b89\u88c5 PL/Tcl \u548c\uff0f\u6216 PL/TclU\uff0c\u53ef\u4f7f\u7528 CREATE EXTENSION \u547d\u4ee4\uff0c\u4f8b\u5982 CREATE EXTENSION pltcl \u6216 CREATE EXTENSION pltclu\u3002</p>\n</div>", "manual_path": "/docs/12/pltcl-overview.html", "localization": {"status": "complete", "sources": [{"url": "/docs/12/pltcl-config.html", "method": "same-major semantic node", "sha256": "42804a54df6d091d162e901fb90d5780ddace7ee40351c1a3c4e42bf66d4bf74", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-data.html", "method": "same-major semantic node", "sha256": "71cd9cf457212262530081f1ae617c8188aaf976d551b99a6344f9c8fd3860fb", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "bfbc88378eb5064aa9535874371967036437c92c34955af4d8d044ac021c3daa", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "f6d87b6cda246ca5cf87bcfb452ed2f64ef931cfe07c25a8b782f09d1c844c41", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "423da3660cd8bb08a1dc6293dacfa2a19822ad0f571ff6ab085503e875c6f033", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-functions.html", "method": "same-major semantic node", "sha256": "f35a1378003af85664c2c9134c38177c20146a2805c0971ba07d04a01e19e267", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-global.html", "method": "same-major semantic node", "sha256": "6d15d3e67703c5b3219b4a9cb2c81f37323c4d966f8dbfe9b36c8ef328d326b6", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "10e6bdc1d04a3d7f78f5d0a4e15466a777caaa1c2257e990abeb0e2aef46316b", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "49adf76308f74977a8dccdab9402837fa509bd6a9531b002f0f06fad2f3c8d46", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "0366fd4dc660b5dccdd04eb3969bd45c5778760418e4fe62d4626bd410cace31", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/12/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "227e0870e14893d597296fc4524549931ecbda9f1fd855ec760caab79f8b8e76", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/12/description/0": "PL/TclU untrusted procedural language", "/versions/12/facts/0/label": "Kind", "/versions/12/facts/0/value": "Bundled procedural-language variant", "/versions/12/facts/1/label": "Family", "/versions/12/facts/2/label": "Trusted", "/versions/12/facts/3/label": "Handler", "/versions/12/facts/4/label": "Library", "/versions/12/facts/5/label": "Default version", "/versions/12/facts/6/label": "Module pathname", "/versions/12/facts/7/label": "Comment", "/versions/12/facts/7/value": "PL/TclU untrusted procedural language", "/versions/12/related/0/label": "pltcl-config", "/versions/12/related/1/label": "pltcl-data", "/versions/12/related/2/label": "pltcl-dbaccess", "/versions/12/related/3/label": "pltcl-error-handling", "/versions/12/related/4/label": "pltcl-event-trigger", "/versions/12/related/5/label": "pltcl-functions", "/versions/12/related/6/label": "pltcl-global", "/versions/12/related/8/label": "pltcl-procnames", "/versions/12/related/9/label": "pltcl-subtransactions", "/versions/12/related/10/label": "pltcl-transactions", "/versions/12/related/11/label": "pltcl-trigger", "/versions/12/sections/0/title": "Installation definition from the matching source archive", "/versions/12/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "c755f3e70ea37518ac058006d547fbf47bc1e40db86bf54088a3f57a7e58bc7f"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "1de536836eae7f15e28a8773f18835663fb793c469518c53136e6d59520c32bd"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh"}, "13": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/13/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/13/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/13/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/13/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/13/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/13/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/13/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/13/pltcl-overview.html", "label": "pltcl-overview"}, {"url": "/docs/13/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/13/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/13/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/13/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "13.23", "major": "13", "channel": "historical", "revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6", "source_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6", "catalog_fingerprint": "c7015c845255c9d721c547c8ab9ef37825d332588c9691d982e6906b7d571002"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, {"url": "https://pg.center/docs/13/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 13 English manual", "sha256": "7bae4281b807e48ee328e686b45186fa1e4cb470291e7ae6a84122a901424925", "language": "en", "original_url": "/docs/13/pltcl-overview.html"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"], "manual_html": "<div class=\"sect1\" id=\"PLTCL-OVERVIEW\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">43.1. \u6982\u8ff0</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">PL/Tcl \u63d0\u4f9b\u4e86 C \u8bed\u8a00\u51fd\u6570\u4f5c\u8005\u6240\u62e5\u6709\u7684\u5927\u591a\u6570\u80fd\u529b\uff0c\u4f46\u6709\u5c11\u91cf\u9650\u5236\uff0c\u540c\u65f6\u589e\u52a0\u4e86 Tcl \u5f3a\u5927\u7684\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002</p>\n<p lang=\"zh\">\u4e00\u4e2a\u6709\u76ca\u7684\u9650\u5236\u662f\uff1a\u6240\u6709\u64cd\u4f5c\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u4e0a\u4e0b\u6587\u7684\u5b89\u5168\u8fb9\u754c\u5185\u6267\u884c\u3002\u9664\u5b89\u5168 Tcl \u7684\u6709\u9650\u547d\u4ee4\u96c6\u5916\uff0c\u4ec5\u63d0\u4f9b\u5c11\u91cf\u547d\u4ee4\uff0c\u7528\u4e8e\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u6216\u901a\u8fc7 elog() \u62a5\u544a\u6d88\u606f\u3002PL/Tcl \u65e0\u6cd5\u50cf C \u51fd\u6570\u90a3\u6837\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\uff0c\u4e5f\u65e0\u6cd5\u4ee5 PostgreSQL \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u65e0\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u6b64\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f1a\u8d4b\u4e88\u4ed6\u4eec\u4e0d\u53d7\u9650\u5236\u7684\u6743\u9650\u3002</p>\n<p lang=\"zh\">\u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff1a\u4e0d\u80fd\u7528 Tcl \u51fd\u6570\u521b\u5efa\u65b0\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\uff0f\u8f93\u51fa\u51fd\u6570\u3002</p>\n<p lang=\"zh\">\u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u53d1\u9001\u90ae\u4ef6\u7684 Tcl \u51fd\u6570\u3002\u4e3a\u6b64\uff0cPL/Tcl \u63d0\u4f9b\u4e86\u540d\u4e3a PL/TclU \u7684\u53d8\u4f53\uff0c\u5373\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\u3002\u9664\u4f7f\u7528\u5b8c\u6574 Tcl \u89e3\u91ca\u5668\u5916\uff0c\u4e24\u8005\u8bed\u8a00\u5b8c\u5168\u76f8\u540c\u3002PL/TclU \u5fc5\u987b\u5b89\u88c5\u4e3a\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00\uff0c\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u7528\u5b83\u521b\u5efa\u51fd\u6570\u3002PL/TclU \u51fd\u6570\u7684\u4f5c\u8005\u5fc5\u987b\u786e\u4fdd\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u4e8e\u6267\u884c\u975e\u9884\u671f\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u6267\u884c\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u6267\u884c\u7684\u4efb\u4f55\u64cd\u4f5c\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u5728\u5b89\u88c5\u8fc7\u7a0b\u7684\u914d\u7f6e\u6b65\u9aa4\u4e2d\u6307\u5b9a\u4e86 Tcl \u652f\u6301\uff0cPL/Tcl \u548c PL/TclU \u8c03\u7528\u5904\u7406\u5668\u7684\u5171\u4eab\u5bf9\u8c61\u4ee3\u7801\u4f1a\u81ea\u52a8\u6784\u5efa\uff0c\u5e76\u5b89\u88c5\u5230 PostgreSQL \u5e93\u76ee\u5f55\u4e2d\u3002\u8981\u5728\u7279\u5b9a\u6570\u636e\u5e93\u4e2d\u5b89\u88c5 PL/Tcl \u548c\uff0f\u6216 PL/TclU\uff0c\u53ef\u4f7f\u7528 CREATE EXTENSION \u547d\u4ee4\uff0c\u4f8b\u5982 CREATE EXTENSION pltcl \u6216 CREATE EXTENSION pltclu\u3002</p>\n</div>", "manual_path": "/docs/13/pltcl-overview.html", "localization": {"status": "complete", "sources": [{"url": "/docs/13/pltcl-config.html", "method": "same-major semantic node", "sha256": "93a7ff39625f2707eee1274ee729a1538dfe07b2766e49bd88b9653e80fd9471", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-data.html", "method": "same-major semantic node", "sha256": "50233512d530c3994405f4f1617b41f4c79825c5bb8f68085f2937d2f1be8319", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "8a96490189c653f7f7b140c1eebacb9f0bec573708461d21f21d872d33735e0d", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "b44dc4139080d78fdeeac741b0da453a200550b9998385c132ccbbbe2419e2b2", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "5c3507309f9cf9e437795a81f6fa09040a6031cda99a89e50117a5072d84d454", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-functions.html", "method": "same-major semantic node", "sha256": "39167ca770f74ab3aec006346c4d4b5a6e9564b97104b552fc20e7896b8f17f7", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-global.html", "method": "same-major semantic node", "sha256": "ab1932f1c1a4f3286272c54712ee146d72c2e6b5b5876202427ab426bcbfcde5", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "1d400c746c94120f331d846a0cbd6a1353bd6e9b2483bf866954b9fba3fb1273", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "47ed98fe5af8ad2c430f7aac8e3ea1c05095c4e7e5cc9b8a0fa76059fdd0737e", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "a858844e1799afd6477bb5f09869925742458c9330c35cc25455b18c7c94454f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/13/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "9a2655f3ae349a3d2881e9221ca357c296f97b7e70c9bfa1cdb2f861e205d8fb", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/13/description/0": "PL/TclU untrusted procedural language", "/versions/13/facts/0/label": "Kind", "/versions/13/facts/0/value": "Bundled procedural-language variant", "/versions/13/facts/1/label": "Family", "/versions/13/facts/2/label": "Trusted", "/versions/13/facts/3/label": "Handler", "/versions/13/facts/4/label": "Library", "/versions/13/facts/5/label": "Default version", "/versions/13/facts/6/label": "Module pathname", "/versions/13/facts/7/label": "Comment", "/versions/13/facts/7/value": "PL/TclU untrusted procedural language", "/versions/13/related/0/label": "pltcl-config", "/versions/13/related/1/label": "pltcl-data", "/versions/13/related/2/label": "pltcl-dbaccess", "/versions/13/related/3/label": "pltcl-error-handling", "/versions/13/related/4/label": "pltcl-event-trigger", "/versions/13/related/5/label": "pltcl-functions", "/versions/13/related/6/label": "pltcl-global", "/versions/13/related/8/label": "pltcl-procnames", "/versions/13/related/9/label": "pltcl-subtransactions", "/versions/13/related/10/label": "pltcl-transactions", "/versions/13/related/11/label": "pltcl-trigger", "/versions/13/sections/0/title": "Installation definition from the matching source archive", "/versions/13/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "6bbe54397481c35dfecd268a6ef7621f36287bac93c8132d4c7c7f435a68047d"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh"}, "14": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/14/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/14/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/14/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/14/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/14/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/14/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/14/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/14/pltcl-overview.html", "label": "pltcl-overview"}, {"url": "/docs/14/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/14/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/14/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/14/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "14.24", "major": "14", "channel": "stable", "revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897", "source_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897", "catalog_fingerprint": "b272e6a82e4c46efda81c3a6a4cdf7de6a83dfff7f02f226a392fbe9acdd3adb"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, {"url": "https://pg.center/docs/14/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 14 English manual", "sha256": "746a3b05d82051248f2cfcab557cd47e8a9a206702a4c93f1bc1ececffb76e28", "language": "en", "original_url": "/docs/14/pltcl-overview.html"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"], "manual_html": "<div class=\"sect1\" id=\"PLTCL-OVERVIEW\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">44.1. \u6982\u8ff0</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">PL/Tcl \u63d0\u4f9b\u4e86 C \u8bed\u8a00\u51fd\u6570\u4f5c\u8005\u6240\u62e5\u6709\u7684\u5927\u591a\u6570\u80fd\u529b\uff0c\u4f46\u6709\u5c11\u91cf\u9650\u5236\uff0c\u540c\u65f6\u589e\u52a0\u4e86 Tcl \u5f3a\u5927\u7684\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002</p>\n<p lang=\"zh\">\u4e00\u4e2a\u6709\u76ca\u7684\u9650\u5236\u662f\uff1a\u6240\u6709\u64cd\u4f5c\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u4e0a\u4e0b\u6587\u7684\u5b89\u5168\u8fb9\u754c\u5185\u6267\u884c\u3002\u9664\u5b89\u5168 Tcl \u7684\u6709\u9650\u547d\u4ee4\u96c6\u5916\uff0c\u4ec5\u63d0\u4f9b\u5c11\u91cf\u547d\u4ee4\uff0c\u7528\u4e8e\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u6216\u901a\u8fc7 elog() \u62a5\u544a\u6d88\u606f\u3002PL/Tcl \u65e0\u6cd5\u50cf C \u51fd\u6570\u90a3\u6837\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\uff0c\u4e5f\u65e0\u6cd5\u4ee5 PostgreSQL \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u65e0\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u6b64\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f1a\u8d4b\u4e88\u4ed6\u4eec\u4e0d\u53d7\u9650\u5236\u7684\u6743\u9650\u3002</p>\n<p lang=\"zh\">\u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff1a\u4e0d\u80fd\u7528 Tcl \u51fd\u6570\u521b\u5efa\u65b0\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\uff0f\u8f93\u51fa\u51fd\u6570\u3002</p>\n<p lang=\"zh\">\u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u53d1\u9001\u90ae\u4ef6\u7684 Tcl \u51fd\u6570\u3002\u4e3a\u6b64\uff0cPL/Tcl \u63d0\u4f9b\u4e86\u540d\u4e3a PL/TclU \u7684\u53d8\u4f53\uff0c\u5373\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\u3002\u9664\u4f7f\u7528\u5b8c\u6574 Tcl \u89e3\u91ca\u5668\u5916\uff0c\u4e24\u8005\u8bed\u8a00\u5b8c\u5168\u76f8\u540c\u3002PL/TclU \u5fc5\u987b\u5b89\u88c5\u4e3a\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00\uff0c\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u7528\u5b83\u521b\u5efa\u51fd\u6570\u3002PL/TclU \u51fd\u6570\u7684\u4f5c\u8005\u5fc5\u987b\u786e\u4fdd\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u4e8e\u6267\u884c\u975e\u9884\u671f\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u6267\u884c\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u6267\u884c\u7684\u4efb\u4f55\u64cd\u4f5c\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u5728\u5b89\u88c5\u8fc7\u7a0b\u7684\u914d\u7f6e\u6b65\u9aa4\u4e2d\u6307\u5b9a\u4e86 Tcl \u652f\u6301\uff0cPL/Tcl \u548c PL/TclU \u8c03\u7528\u5904\u7406\u5668\u7684\u5171\u4eab\u5bf9\u8c61\u4ee3\u7801\u4f1a\u81ea\u52a8\u6784\u5efa\uff0c\u5e76\u5b89\u88c5\u5230 PostgreSQL \u5e93\u76ee\u5f55\u4e2d\u3002\u8981\u5728\u7279\u5b9a\u6570\u636e\u5e93\u4e2d\u5b89\u88c5 PL/Tcl \u548c\uff0f\u6216 PL/TclU\uff0c\u53ef\u4f7f\u7528 CREATE EXTENSION \u547d\u4ee4\uff0c\u4f8b\u5982 CREATE EXTENSION pltcl \u6216 CREATE EXTENSION pltclu\u3002</p>\n</div>", "manual_path": "/docs/14/pltcl-overview.html", "localization": {"status": "complete", "sources": [{"url": "/docs/14/pltcl-config.html", "method": "same-major semantic node", "sha256": "1b66224756cfcb425163c53b41c4c60cca59a57c9a492f924f9729b8c706e77a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-data.html", "method": "same-major semantic node", "sha256": "32e872942b7d7a4b42d0dc6dcb83a7dff4cce8013ade8b211c74d4370539bb11", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "56fdd0aca46d2d0d639a83e6bf3e1d801ffa162912077b80c77cc9471d2b7ab0", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "668935fe14cfbfe1e9efff309951e87136c70a8820d99238350a518cdcd07ae7", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "29a347e23df47a676251274ae71b27a1a22e7d5d713a8ce5c209e69b9650aebf", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-functions.html", "method": "same-major semantic node", "sha256": "f1caa613865c0a6c665f1c89670ad6d9bae904ad6be157b8622ae041ea7770bd", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-global.html", "method": "same-major semantic node", "sha256": "1c599f1363e742cb6bc2db6f7a73cd25d518e552e95152ac601ae773657c210e", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "7f5045a7f724de4d6bf65b40fdbf2ae6c9aa438327cd01a01c188062bf7d7a78", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "f9d47a58ca8283ed0e440f57d1d4688063ed9fda879f335a39319f70ece7e335", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "05e9bc2efccea131563cd999847fad95deac5e4b2f84c7c63f93287507164511", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/14/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "340ba7e37b2c0c3576f6301a0e47e242fe799e78982649645872477dfc46e8eb", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/14/description/0": "PL/TclU untrusted procedural language", "/versions/14/facts/0/label": "Kind", "/versions/14/facts/0/value": "Bundled procedural-language variant", "/versions/14/facts/1/label": "Family", "/versions/14/facts/2/label": "Trusted", "/versions/14/facts/3/label": "Handler", "/versions/14/facts/4/label": "Library", "/versions/14/facts/5/label": "Default version", "/versions/14/facts/6/label": "Module pathname", "/versions/14/facts/7/label": "Comment", "/versions/14/facts/7/value": "PL/TclU untrusted procedural language", "/versions/14/related/0/label": "pltcl-config", "/versions/14/related/1/label": "pltcl-data", "/versions/14/related/2/label": "pltcl-dbaccess", "/versions/14/related/3/label": "pltcl-error-handling", "/versions/14/related/4/label": "pltcl-event-trigger", "/versions/14/related/5/label": "pltcl-functions", "/versions/14/related/6/label": "pltcl-global", "/versions/14/related/8/label": "pltcl-procnames", "/versions/14/related/9/label": "pltcl-subtransactions", "/versions/14/related/10/label": "pltcl-transactions", "/versions/14/related/11/label": "pltcl-trigger", "/versions/14/sections/0/title": "Installation definition from the matching source archive", "/versions/14/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "1ad9c6fcccd7aee8b5bfdf7050559dfe7ebb0b505f53991c6c407192c4c66c65"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh"}, "15": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/15/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/15/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/15/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/15/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/15/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/15/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/15/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/15/pltcl-overview.html", "label": "pltcl-overview"}, {"url": "/docs/15/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/15/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/15/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/15/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "15.19", "major": "15", "channel": "stable", "revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89", "source_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89", "catalog_fingerprint": "fefe3c425147a86defada190c9b0663cfe02caa1724f5dede93e46457572252d"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, {"url": "https://pg.center/docs/15/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 15 English manual", "sha256": "c69d50fe5d0c031be4253eee44279d07dc038040038b9c478348fa4b725280de", "language": "en", "original_url": "/docs/15/pltcl-overview.html"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"], "manual_html": "<div class=\"sect1\" id=\"PLTCL-OVERVIEW\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">44.1. \u6982\u8ff0</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">PL/Tcl \u63d0\u4f9b\u4e86 C \u8bed\u8a00\u51fd\u6570\u4f5c\u8005\u6240\u62e5\u6709\u7684\u5927\u591a\u6570\u80fd\u529b\uff0c\u4f46\u6709\u5c11\u91cf\u9650\u5236\uff0c\u540c\u65f6\u589e\u52a0\u4e86 Tcl \u5f3a\u5927\u7684\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002</p>\n<p lang=\"zh\">\u4e00\u4e2a\u6709\u76ca\u7684\u9650\u5236\u662f\uff1a\u6240\u6709\u64cd\u4f5c\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u4e0a\u4e0b\u6587\u7684\u5b89\u5168\u8fb9\u754c\u5185\u6267\u884c\u3002\u9664\u5b89\u5168 Tcl \u7684\u6709\u9650\u547d\u4ee4\u96c6\u5916\uff0c\u4ec5\u63d0\u4f9b\u5c11\u91cf\u547d\u4ee4\uff0c\u7528\u4e8e\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u6216\u901a\u8fc7 elog() \u62a5\u544a\u6d88\u606f\u3002PL/Tcl \u65e0\u6cd5\u50cf C \u51fd\u6570\u90a3\u6837\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\uff0c\u4e5f\u65e0\u6cd5\u4ee5 PostgreSQL \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u65e0\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u6b64\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f1a\u8d4b\u4e88\u4ed6\u4eec\u4e0d\u53d7\u9650\u5236\u7684\u6743\u9650\u3002</p>\n<p lang=\"zh\">\u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff1a\u4e0d\u80fd\u7528 Tcl \u51fd\u6570\u521b\u5efa\u65b0\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\uff0f\u8f93\u51fa\u51fd\u6570\u3002</p>\n<p lang=\"zh\">\u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u53d1\u9001\u90ae\u4ef6\u7684 Tcl \u51fd\u6570\u3002\u4e3a\u6b64\uff0cPL/Tcl \u63d0\u4f9b\u4e86\u540d\u4e3a PL/TclU \u7684\u53d8\u4f53\uff0c\u5373\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\u3002\u9664\u4f7f\u7528\u5b8c\u6574 Tcl \u89e3\u91ca\u5668\u5916\uff0c\u4e24\u8005\u8bed\u8a00\u5b8c\u5168\u76f8\u540c\u3002PL/TclU \u5fc5\u987b\u5b89\u88c5\u4e3a\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00\uff0c\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u7528\u5b83\u521b\u5efa\u51fd\u6570\u3002PL/TclU \u51fd\u6570\u7684\u4f5c\u8005\u5fc5\u987b\u786e\u4fdd\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u4e8e\u6267\u884c\u975e\u9884\u671f\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u6267\u884c\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u6267\u884c\u7684\u4efb\u4f55\u64cd\u4f5c\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u5728\u5b89\u88c5\u8fc7\u7a0b\u7684\u914d\u7f6e\u6b65\u9aa4\u4e2d\u6307\u5b9a\u4e86 Tcl \u652f\u6301\uff0cPL/Tcl \u548c PL/TclU \u8c03\u7528\u5904\u7406\u5668\u7684\u5171\u4eab\u5bf9\u8c61\u4ee3\u7801\u4f1a\u81ea\u52a8\u6784\u5efa\uff0c\u5e76\u5b89\u88c5\u5230 PostgreSQL \u5e93\u76ee\u5f55\u4e2d\u3002\u8981\u5728\u7279\u5b9a\u6570\u636e\u5e93\u4e2d\u5b89\u88c5 PL/Tcl \u548c\uff0f\u6216 PL/TclU\uff0c\u53ef\u4f7f\u7528 CREATE EXTENSION \u547d\u4ee4\uff0c\u4f8b\u5982 CREATE EXTENSION pltcl \u6216 CREATE EXTENSION pltclu\u3002</p>\n</div>", "manual_path": "/docs/15/pltcl-overview.html", "localization": {"status": "complete", "sources": [{"url": "/docs/15/pltcl-config.html", "method": "same-major semantic node", "sha256": "a79a21215077dc292f0e885462fdc1ea0a2c93b7ba8ddf64a529fbba63498549", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-data.html", "method": "same-major semantic node", "sha256": "fd6c870ecc299cc4273b7694b7e354b1488f3ff4d698babbd2a95ce7d92ce123", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "7457dfdeebc8509c7c308884a6dd722490656a9ec8f5263195fb9d0d1958115f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "f62ae338c0263abaa0d54cbc3930d0f2c5061a7c3b33c0df47dacff60f897fa2", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "e9800e533e692979a60ad41ca79d885958a78066f1fea9ead03123a059615c85", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-functions.html", "method": "same-major semantic node", "sha256": "88a4ad68fccd22a4c44db372f662f9a72253824681c849f327a875cf71a68a42", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-global.html", "method": "same-major semantic node", "sha256": "448332b1ed957f3075369b20d543e486a0cc6184c10b9b5fd5c27a9c2d383d9f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "c8e2aeae3326fc52c7378d1c76f3021a22785280ae67264fb9a9a80d010e550d", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "c4adcc62b2587c646a6011633d613961ec117dccb5a9f48a7ddba2724a11621f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "7af9704f95ee33049f3fa3b2ada2bda0f247268538cef83da0ba973c30529468", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/15/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "56278a1b9d0067751ed3c74567a0f5ec8740ebaa304b99dc93c807e7cc19c596", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/15/description/0": "PL/TclU untrusted procedural language", "/versions/15/facts/0/label": "Kind", "/versions/15/facts/0/value": "Bundled procedural-language variant", "/versions/15/facts/1/label": "Family", "/versions/15/facts/2/label": "Trusted", "/versions/15/facts/3/label": "Handler", "/versions/15/facts/4/label": "Library", "/versions/15/facts/5/label": "Default version", "/versions/15/facts/6/label": "Module pathname", "/versions/15/facts/7/label": "Comment", "/versions/15/facts/7/value": "PL/TclU untrusted procedural language", "/versions/15/related/0/label": "pltcl-config", "/versions/15/related/1/label": "pltcl-data", "/versions/15/related/2/label": "pltcl-dbaccess", "/versions/15/related/3/label": "pltcl-error-handling", "/versions/15/related/4/label": "pltcl-event-trigger", "/versions/15/related/5/label": "pltcl-functions", "/versions/15/related/6/label": "pltcl-global", "/versions/15/related/8/label": "pltcl-procnames", "/versions/15/related/9/label": "pltcl-subtransactions", "/versions/15/related/10/label": "pltcl-transactions", "/versions/15/related/11/label": "pltcl-trigger", "/versions/15/sections/0/title": "Installation definition from the matching source archive", "/versions/15/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "686a8937281772ee690a1883172f15b8590b5ee4e0379af05ea39065df86c3ab"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh"}, "16": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/16/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/16/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/16/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/16/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/16/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/16/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/16/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/16/pltcl-overview.html", "label": "\u6982\u8ff0"}, {"url": "/docs/16/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/16/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/16/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/16/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "16.15", "major": "16", "channel": "stable", "revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed", "source_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed", "catalog_fingerprint": "fa133458dc8f52e15083b4f59b7a582e2e378b608d3ac5c53054df458a374e23"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, {"url": "https://pg.center/docs/16/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 16 English manual", "sha256": "48c40b3b6117adb1bc045a1ddf6d531e53526ae733e9db3bf98f599964164549", "language": "en", "original_url": "/docs/16/pltcl-overview.html"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"], "manual_html": "<div class=\"sect1\" id=\"PLTCL-OVERVIEW\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">44.1. \u6982\u8ff0</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">PL/Tcl \u63d0\u4f9b\u4e86 C \u8bed\u8a00\u51fd\u6570\u4f5c\u8005\u6240\u62e5\u6709\u7684\u5927\u591a\u6570\u80fd\u529b\uff0c\u4f46\u6709\u5c11\u91cf\u9650\u5236\uff0c\u540c\u65f6\u589e\u52a0\u4e86 Tcl \u5f3a\u5927\u7684\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002</p>\n<p lang=\"zh\">\u4e00\u4e2a\u6709\u76ca\u7684\u9650\u5236\u662f\uff1a\u6240\u6709\u64cd\u4f5c\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u4e0a\u4e0b\u6587\u7684\u5b89\u5168\u8fb9\u754c\u5185\u6267\u884c\u3002\u9664\u5b89\u5168 Tcl \u7684\u6709\u9650\u547d\u4ee4\u96c6\u5916\uff0c\u4ec5\u63d0\u4f9b\u5c11\u91cf\u547d\u4ee4\uff0c\u7528\u4e8e\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u6216\u901a\u8fc7 elog() \u62a5\u544a\u6d88\u606f\u3002PL/Tcl \u65e0\u6cd5\u50cf C \u51fd\u6570\u90a3\u6837\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\uff0c\u4e5f\u65e0\u6cd5\u4ee5 PostgreSQL \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u65e0\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u6b64\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f1a\u8d4b\u4e88\u4ed6\u4eec\u4e0d\u53d7\u9650\u5236\u7684\u6743\u9650\u3002</p>\n<p lang=\"zh\">\u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff1a\u4e0d\u80fd\u7528 Tcl \u51fd\u6570\u521b\u5efa\u65b0\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\uff0f\u8f93\u51fa\u51fd\u6570\u3002</p>\n<p lang=\"zh\">\u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u53d1\u9001\u90ae\u4ef6\u7684 Tcl \u51fd\u6570\u3002\u4e3a\u6b64\uff0cPL/Tcl \u63d0\u4f9b\u4e86\u540d\u4e3a PL/TclU \u7684\u53d8\u4f53\uff0c\u5373\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\u3002\u9664\u4f7f\u7528\u5b8c\u6574 Tcl \u89e3\u91ca\u5668\u5916\uff0c\u4e24\u8005\u8bed\u8a00\u5b8c\u5168\u76f8\u540c\u3002PL/TclU \u5fc5\u987b\u5b89\u88c5\u4e3a\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00\uff0c\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u7528\u5b83\u521b\u5efa\u51fd\u6570\u3002PL/TclU \u51fd\u6570\u7684\u4f5c\u8005\u5fc5\u987b\u786e\u4fdd\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u4e8e\u6267\u884c\u975e\u9884\u671f\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u6267\u884c\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u6267\u884c\u7684\u4efb\u4f55\u64cd\u4f5c\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u5728\u5b89\u88c5\u8fc7\u7a0b\u7684\u914d\u7f6e\u6b65\u9aa4\u4e2d\u6307\u5b9a\u4e86 Tcl \u652f\u6301\uff0cPL/Tcl \u548c PL/TclU \u8c03\u7528\u5904\u7406\u5668\u7684\u5171\u4eab\u5bf9\u8c61\u4ee3\u7801\u4f1a\u81ea\u52a8\u6784\u5efa\uff0c\u5e76\u5b89\u88c5\u5230 PostgreSQL \u5e93\u76ee\u5f55\u4e2d\u3002\u8981\u5728\u7279\u5b9a\u6570\u636e\u5e93\u4e2d\u5b89\u88c5 PL/Tcl \u548c\uff0f\u6216 PL/TclU\uff0c\u53ef\u4f7f\u7528 CREATE EXTENSION \u547d\u4ee4\uff0c\u4f8b\u5982 CREATE EXTENSION pltcl \u6216 CREATE EXTENSION pltclu\u3002</p>\n</div>", "manual_path": "/docs/16/pltcl-overview.html", "localization": {"status": "complete", "sources": [{"url": "/docs/16/pltcl-config.html", "method": "same-major semantic node", "sha256": "f309835479b80a441b7c795183238ca9afadaac13bc2e94e81da7e23f784cfc7", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-data.html", "method": "same-major semantic node", "sha256": "e2376a5392260344c21beac8b95a332a4e558eb991e20eded40ac2f48c4e28b6", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "d451d40d879b484edaed371f4fc9fc50b20724243784843b26156b2317b3312a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "e981c5702100b59ba9cc0b2f6711fc9ec9ecd51406244d946fe6efd88b073a08", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "2ff39eeaff458bdc1c134b12dfe146d901c94886e10b102ac163e8b6f9ac043a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-functions.html", "method": "same-major semantic node", "sha256": "90e67d25f9ee5d4c15004ca324570799f8fb0bc42c3c7eb5a9cd7c2cc16d868a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-global.html", "method": "same-major semantic node", "sha256": "36b71d6548b67761620f1ecf4166dcf3b47c140b3e8daa0ed43f8aa2eb4a98f3", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-overview.html", "method": "same-major semantic node", "sha256": "5c6b932bdbb0aacb9195a121766132fcabe2221ff9bc14e54a8408e62951dbfb", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "c568b554aed372c28a6b7e4d7a29329473816e35449b93e3d65263ee9a2de351", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "e1ba3644fd62497834a41696d4fc08c3a0db1e01df01015ae38e6a26364eab6c", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "2181970d246a4a9a211343eea8c40d8a953e047659d850f85da36624a34e2bf1", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/16/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "3d8414deb1c95e5f83e3d25cc8d38b6f6742757c3153db92c9d3b3da629c8eb3", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/16/description/0": "PL/TclU untrusted procedural language", "/versions/16/facts/0/label": "Kind", "/versions/16/facts/0/value": "Bundled procedural-language variant", "/versions/16/facts/1/label": "Family", "/versions/16/facts/2/label": "Trusted", "/versions/16/facts/3/label": "Handler", "/versions/16/facts/4/label": "Library", "/versions/16/facts/5/label": "Default version", "/versions/16/facts/6/label": "Module pathname", "/versions/16/facts/7/label": "Comment", "/versions/16/facts/7/value": "PL/TclU untrusted procedural language", "/versions/16/related/0/label": "pltcl-config", "/versions/16/related/1/label": "pltcl-data", "/versions/16/related/2/label": "pltcl-dbaccess", "/versions/16/related/3/label": "pltcl-error-handling", "/versions/16/related/4/label": "pltcl-event-trigger", "/versions/16/related/5/label": "pltcl-functions", "/versions/16/related/6/label": "pltcl-global", "/versions/16/related/7/label": "pltcl-overview", "/versions/16/related/8/label": "pltcl-procnames", "/versions/16/related/9/label": "pltcl-subtransactions", "/versions/16/related/10/label": "pltcl-transactions", "/versions/16/related/11/label": "pltcl-trigger", "/versions/16/sections/0/title": "Installation definition from the matching source archive", "/versions/16/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "0166b1e35b3ac58fb1a5469790b954b474501b20da461facf8960b116f5d6e1d"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh"}, "17": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/17/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/17/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/17/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/17/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/17/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/17/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/17/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/17/pltcl-overview.html", "label": "\u6982\u8ff0"}, {"url": "/docs/17/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/17/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/17/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/17/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "17.11", "major": "17", "channel": "stable", "revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979", "source_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979", "catalog_fingerprint": "4bbe3ac77becd618478f66aec420a533e9017be356c5c1d51a4b17f0fd497c07"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, {"url": "https://pg.center/docs/17/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 17 English manual", "sha256": "4f4650b7f27c329d727c2038f1e27ef847e0f6baffc8dac538bbebf4b1b77b40", "language": "en", "original_url": "/docs/17/pltcl-overview.html"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"], "manual_html": "<div class=\"sect1\" id=\"PLTCL-OVERVIEW\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">42.1. \u6982\u8ff0</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">PL/Tcl \u63d0\u4f9b\u4e86 C \u8bed\u8a00\u51fd\u6570\u4f5c\u8005\u6240\u62e5\u6709\u7684\u5927\u591a\u6570\u80fd\u529b\uff0c\u4f46\u6709\u5c11\u91cf\u9650\u5236\uff0c\u540c\u65f6\u589e\u52a0\u4e86 Tcl \u5f3a\u5927\u7684\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002</p>\n<p lang=\"zh\">\u4e00\u4e2a\u6709\u76ca\u7684\u9650\u5236\u662f\uff1a\u6240\u6709\u64cd\u4f5c\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u4e0a\u4e0b\u6587\u7684\u5b89\u5168\u8fb9\u754c\u5185\u6267\u884c\u3002\u9664\u5b89\u5168 Tcl \u7684\u6709\u9650\u547d\u4ee4\u96c6\u5916\uff0c\u4ec5\u63d0\u4f9b\u5c11\u91cf\u547d\u4ee4\uff0c\u7528\u4e8e\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u6216\u901a\u8fc7 elog() \u62a5\u544a\u6d88\u606f\u3002PL/Tcl \u65e0\u6cd5\u50cf C \u51fd\u6570\u90a3\u6837\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\uff0c\u4e5f\u65e0\u6cd5\u4ee5 PostgreSQL \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u65e0\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u6b64\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f1a\u8d4b\u4e88\u4ed6\u4eec\u4e0d\u53d7\u9650\u5236\u7684\u6743\u9650\u3002</p>\n<p lang=\"zh\">\u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff1a\u4e0d\u80fd\u7528 Tcl \u51fd\u6570\u521b\u5efa\u65b0\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\uff0f\u8f93\u51fa\u51fd\u6570\u3002</p>\n<p lang=\"zh\">\u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u53d1\u9001\u90ae\u4ef6\u7684 Tcl \u51fd\u6570\u3002\u4e3a\u6b64\uff0cPL/Tcl \u63d0\u4f9b\u4e86\u540d\u4e3a PL/TclU \u7684\u53d8\u4f53\uff0c\u5373\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\u3002\u9664\u4f7f\u7528\u5b8c\u6574 Tcl \u89e3\u91ca\u5668\u5916\uff0c\u4e24\u8005\u8bed\u8a00\u5b8c\u5168\u76f8\u540c\u3002PL/TclU \u5fc5\u987b\u5b89\u88c5\u4e3a\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00\uff0c\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u7528\u5b83\u521b\u5efa\u51fd\u6570\u3002PL/TclU \u51fd\u6570\u7684\u4f5c\u8005\u5fc5\u987b\u786e\u4fdd\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u4e8e\u6267\u884c\u975e\u9884\u671f\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u6267\u884c\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u6267\u884c\u7684\u4efb\u4f55\u64cd\u4f5c\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u5728\u5b89\u88c5\u8fc7\u7a0b\u7684\u914d\u7f6e\u6b65\u9aa4\u4e2d\u6307\u5b9a\u4e86 Tcl \u652f\u6301\uff0cPL/Tcl \u548c PL/TclU \u8c03\u7528\u5904\u7406\u5668\u7684\u5171\u4eab\u5bf9\u8c61\u4ee3\u7801\u4f1a\u81ea\u52a8\u6784\u5efa\uff0c\u5e76\u5b89\u88c5\u5230 PostgreSQL \u5e93\u76ee\u5f55\u4e2d\u3002\u8981\u5728\u7279\u5b9a\u6570\u636e\u5e93\u4e2d\u5b89\u88c5 PL/Tcl \u548c\uff0f\u6216 PL/TclU\uff0c\u53ef\u4f7f\u7528 CREATE EXTENSION \u547d\u4ee4\uff0c\u4f8b\u5982 CREATE EXTENSION pltcl \u6216 CREATE EXTENSION pltclu\u3002</p>\n</div>", "manual_path": "/docs/17/pltcl-overview.html", "localization": {"status": "complete", "sources": [{"url": "/docs/17/pltcl-config.html", "method": "same-major semantic node", "sha256": "519aae5b7f1c68b647143a554a3fb4292ea8d96449dd043b3ee3e7a938ff46ff", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-data.html", "method": "same-major semantic node", "sha256": "510fd0abdda2b4277cad4bfd648e141953b189634909e6ab109adb50a857abf3", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "c0a5ba83ab37ce706fd578075c1b36191c257f129445de9762475b7465c00311", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "111530b322301bdfd6c9ca6eec9add69f4ad7a185d6c5e6cb565929a57a261ef", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "2758d68398e70f19fda60b4b9888dd4dfae5acde5aa1547e6844098008beb194", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-functions.html", "method": "same-major semantic node", "sha256": "b0b84663774c29c003a10b4b6c0984c2dc5c7de2e05001f4b8285bba6312195b", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-global.html", "method": "same-major semantic node", "sha256": "4a7d0380a88633b9db3ff5122f21015e52d734ad7bb690a66d3d9403ad3df9b1", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-overview.html", "method": "same-major semantic node", "sha256": "162fe2082139f78ec0803b62626f0ba3abfd3f70afa173be2d242f2f917743b1", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "3e0d15f57f77c39c42c17befa343e834b6b6c7ac565c78cbd285ebeefafffefb", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "b88934d180a62df6ce6968a4b0deb35befee2b84eb8dfd3840aabad880a86f61", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "c4cae6daf5135bc32b7cd0c5606cc50c3b70c9bffc19e889d67d0eba12f0ef6f", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/17/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "f73684f366d73e93d9a28614819714001ee374778b3b94def27dd3fab318c8ad", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/17/description/0": "PL/TclU untrusted procedural language", "/versions/17/facts/0/label": "Kind", "/versions/17/facts/0/value": "Bundled procedural-language variant", "/versions/17/facts/1/label": "Family", "/versions/17/facts/2/label": "Trusted", "/versions/17/facts/3/label": "Handler", "/versions/17/facts/4/label": "Library", "/versions/17/facts/5/label": "Default version", "/versions/17/facts/6/label": "Module pathname", "/versions/17/facts/7/label": "Comment", "/versions/17/facts/7/value": "PL/TclU untrusted procedural language", "/versions/17/related/0/label": "pltcl-config", "/versions/17/related/1/label": "pltcl-data", "/versions/17/related/2/label": "pltcl-dbaccess", "/versions/17/related/3/label": "pltcl-error-handling", "/versions/17/related/4/label": "pltcl-event-trigger", "/versions/17/related/5/label": "pltcl-functions", "/versions/17/related/6/label": "pltcl-global", "/versions/17/related/7/label": "pltcl-overview", "/versions/17/related/8/label": "pltcl-procnames", "/versions/17/related/9/label": "pltcl-subtransactions", "/versions/17/related/10/label": "pltcl-transactions", "/versions/17/related/11/label": "pltcl-trigger", "/versions/17/sections/0/title": "Installation definition from the matching source archive", "/versions/17/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "8c4579340f6baa66d35f7d07cdbcce6e4c9be639b6c84b16c23804e8b349c3e4"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh"}, "18": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/18/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/18/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/18/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/18/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/18/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/18/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/18/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/18/pltcl-overview.html", "label": "\u6982\u8ff0"}, {"url": "/docs/18/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/18/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/18/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/18/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "catalog_fingerprint": "65c93d6048ef30e61023a84f9680fa6a92b1c383b7eb226741170077eb078502"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://pg.center/docs/18/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 18 English manual", "sha256": "ed93c7e7682e446657a8c944dbabdabb0236e2d09c48db1c7e804270ce480044", "language": "en", "original_url": "/docs/18/pltcl-overview.html"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"], "manual_html": "<div class=\"sect1\" id=\"PLTCL-OVERVIEW\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">42.1. \u6982\u8ff0</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">PL/Tcl \u63d0\u4f9b\u4e86 C \u8bed\u8a00\u51fd\u6570\u4f5c\u8005\u6240\u62e5\u6709\u7684\u5927\u591a\u6570\u80fd\u529b\uff0c\u4f46\u6709\u5c11\u91cf\u9650\u5236\uff0c\u540c\u65f6\u589e\u52a0\u4e86 Tcl \u5f3a\u5927\u7684\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002</p>\n<p lang=\"zh\">\u4e00\u4e2a\u6709\u76ca\u7684\u9650\u5236\u662f\uff1a\u6240\u6709\u64cd\u4f5c\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u4e0a\u4e0b\u6587\u7684\u5b89\u5168\u8fb9\u754c\u5185\u6267\u884c\u3002\u9664\u5b89\u5168 Tcl \u7684\u6709\u9650\u547d\u4ee4\u96c6\u5916\uff0c\u4ec5\u63d0\u4f9b\u5c11\u91cf\u547d\u4ee4\uff0c\u7528\u4e8e\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u6216\u901a\u8fc7 elog() \u62a5\u544a\u6d88\u606f\u3002PL/Tcl \u65e0\u6cd5\u50cf C \u51fd\u6570\u90a3\u6837\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\uff0c\u4e5f\u65e0\u6cd5\u4ee5 PostgreSQL \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u65e0\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u6b64\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f1a\u8d4b\u4e88\u4ed6\u4eec\u4e0d\u53d7\u9650\u5236\u7684\u6743\u9650\u3002</p>\n<p lang=\"zh\">\u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff1a\u4e0d\u80fd\u7528 Tcl \u51fd\u6570\u521b\u5efa\u65b0\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\uff0f\u8f93\u51fa\u51fd\u6570\u3002</p>\n<p lang=\"zh\">\u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u53d1\u9001\u90ae\u4ef6\u7684 Tcl \u51fd\u6570\u3002\u4e3a\u6b64\uff0cPL/Tcl \u63d0\u4f9b\u4e86\u540d\u4e3a PL/TclU \u7684\u53d8\u4f53\uff0c\u5373\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\u3002\u9664\u4f7f\u7528\u5b8c\u6574 Tcl \u89e3\u91ca\u5668\u5916\uff0c\u4e24\u8005\u8bed\u8a00\u5b8c\u5168\u76f8\u540c\u3002PL/TclU \u5fc5\u987b\u5b89\u88c5\u4e3a\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00\uff0c\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u7528\u5b83\u521b\u5efa\u51fd\u6570\u3002PL/TclU \u51fd\u6570\u7684\u4f5c\u8005\u5fc5\u987b\u786e\u4fdd\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u4e8e\u6267\u884c\u975e\u9884\u671f\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u6267\u884c\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u6267\u884c\u7684\u4efb\u4f55\u64cd\u4f5c\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u5728\u5b89\u88c5\u8fc7\u7a0b\u7684\u914d\u7f6e\u6b65\u9aa4\u4e2d\u6307\u5b9a\u4e86 Tcl \u652f\u6301\uff0cPL/Tcl \u548c PL/TclU \u8c03\u7528\u5904\u7406\u5668\u7684\u5171\u4eab\u5bf9\u8c61\u4ee3\u7801\u4f1a\u81ea\u52a8\u6784\u5efa\uff0c\u5e76\u5b89\u88c5\u5230 PostgreSQL \u5e93\u76ee\u5f55\u4e2d\u3002\u8981\u5728\u7279\u5b9a\u6570\u636e\u5e93\u4e2d\u5b89\u88c5 PL/Tcl \u548c\uff0f\u6216 PL/TclU\uff0c\u53ef\u4f7f\u7528 CREATE EXTENSION \u547d\u4ee4\uff0c\u4f8b\u5982 CREATE EXTENSION pltcl \u6216 CREATE EXTENSION pltclu\u3002</p>\n</div>", "manual_path": "/docs/18/pltcl-overview.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/pltcl-config.html", "method": "same-major semantic node", "sha256": "44bd7295431ce43082579fd75e325702d59ec6a7559637dcb4277a15e3955840", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-data.html", "method": "same-major semantic node", "sha256": "eae86495797a15ab7fc81a0e1df8c3c8cb0510541d92996034e044e253723661", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "d9d56737e09ec9777611f98bab439306e428fd067b6b78c48c683651df6d3fe8", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "ebf08a10fce4b6ff4e80408187b64cd96ae2184f2a2d430ba219b2bea9c480b9", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "172bc7b8e8b9f630b6c0b21746889cd9f11be93da0ebdd643f9d1f7176ff5767", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-functions.html", "method": "same-major semantic node", "sha256": "f0170be36dcd273379209a05372b9faa548c84c8fa997643a70d3a77d017a632", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-global.html", "method": "same-major semantic node", "sha256": "e08c5f22c0a94e2e8a66299ba7de5f0d0ad0b5412e7df02f483dc8864bedcf2a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-overview.html", "method": "same-major semantic node", "sha256": "76c5b1d72336e5f085d19de115704918382f35b19a5274fa14341d40986d2776", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "84665c1991422a305552b8511393ae7157d7e9c950218b0a12c9d5b46b79cb83", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "7f07515a70b3e8453088498a06f9b24b4725756c0819bd33aec4d9dc0299aa39", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "d88b8fc3f963a251e897c3943c5c2b85fe8431cf1e18a1a8824a460447bf839e", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "a50a86f45b38e1891e93986f6dd04eaeaf9f85926c482e2b564740e54f69de7b", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/18/description/0": "PL/TclU untrusted procedural language", "/versions/18/facts/0/label": "Kind", "/versions/18/facts/0/value": "Bundled procedural-language variant", "/versions/18/facts/1/label": "Family", "/versions/18/facts/2/label": "Trusted", "/versions/18/facts/3/label": "Handler", "/versions/18/facts/4/label": "Library", "/versions/18/facts/5/label": "Default version", "/versions/18/facts/6/label": "Module pathname", "/versions/18/facts/7/label": "Comment", "/versions/18/facts/7/value": "PL/TclU untrusted procedural language", "/versions/18/related/0/label": "pltcl-config", "/versions/18/related/1/label": "pltcl-data", "/versions/18/related/2/label": "pltcl-dbaccess", "/versions/18/related/3/label": "pltcl-error-handling", "/versions/18/related/4/label": "pltcl-event-trigger", "/versions/18/related/5/label": "pltcl-functions", "/versions/18/related/6/label": "pltcl-global", "/versions/18/related/7/label": "pltcl-overview", "/versions/18/related/8/label": "pltcl-procnames", "/versions/18/related/9/label": "pltcl-subtransactions", "/versions/18/related/10/label": "pltcl-transactions", "/versions/18/related/11/label": "pltcl-trigger", "/versions/18/sections/0/title": "Installation definition from the matching source archive", "/versions/18/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "143984f67996e93595d13f35d264d808bfd4f91b9900c16857a3e3883e08bfbb"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh"}, "19": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/19/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/19/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/19/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/19/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/19/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/19/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/19/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/19/pltcl-overview.html", "label": "\u6982\u8ff0"}, {"url": "/docs/19/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/19/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/19/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/19/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "label": "19beta4", "major": "19", "channel": "preview", "revision": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86", "source_sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86", "catalog_fingerprint": "62fbf1a3689dbe8bf7e6b3372cfe6fbf867581427b3858a94c8419b77a4d2d1d"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, {"url": "https://pg.center/docs/19/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 19 English manual", "sha256": "af198c33d9d189020294c67972a26b28835479ea8fa39988a963a93e3fed7b4a", "language": "en", "original_url": "/docs/19/pltcl-overview.html"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"], "manual_html": "<div class=\"sect1\" id=\"PLTCL-OVERVIEW\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">42.1. \u6982\u8ff0</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">PL/Tcl \u63d0\u4f9b\u4e86 C \u8bed\u8a00\u51fd\u6570\u4f5c\u8005\u6240\u62e5\u6709\u7684\u5927\u591a\u6570\u80fd\u529b\uff0c\u4f46\u6709\u5c11\u91cf\u9650\u5236\uff0c\u540c\u65f6\u589e\u52a0\u4e86 Tcl \u5f3a\u5927\u7684\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002</p>\n<p lang=\"zh\">\u4e00\u4e2a\u6709\u76ca\u7684\u9650\u5236\u662f\uff1a\u6240\u6709\u64cd\u4f5c\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u4e0a\u4e0b\u6587\u7684\u5b89\u5168\u8fb9\u754c\u5185\u6267\u884c\u3002\u9664\u5b89\u5168 Tcl \u7684\u6709\u9650\u547d\u4ee4\u96c6\u5916\uff0c\u4ec5\u63d0\u4f9b\u5c11\u91cf\u547d\u4ee4\uff0c\u7528\u4e8e\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u6216\u901a\u8fc7 elog() \u62a5\u544a\u6d88\u606f\u3002PL/Tcl \u65e0\u6cd5\u50cf C \u51fd\u6570\u90a3\u6837\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\uff0c\u4e5f\u65e0\u6cd5\u4ee5 PostgreSQL \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u65e0\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u6b64\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f1a\u8d4b\u4e88\u4ed6\u4eec\u4e0d\u53d7\u9650\u5236\u7684\u6743\u9650\u3002</p>\n<p lang=\"zh\">\u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff1a\u4e0d\u80fd\u7528 Tcl \u51fd\u6570\u521b\u5efa\u65b0\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\uff0f\u8f93\u51fa\u51fd\u6570\u3002</p>\n<p lang=\"zh\">\u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u53d1\u9001\u90ae\u4ef6\u7684 Tcl \u51fd\u6570\u3002\u4e3a\u6b64\uff0cPL/Tcl \u63d0\u4f9b\u4e86\u540d\u4e3a PL/TclU \u7684\u53d8\u4f53\uff0c\u5373\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\u3002\u9664\u4f7f\u7528\u5b8c\u6574 Tcl \u89e3\u91ca\u5668\u5916\uff0c\u4e24\u8005\u8bed\u8a00\u5b8c\u5168\u76f8\u540c\u3002PL/TclU \u5fc5\u987b\u5b89\u88c5\u4e3a\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00\uff0c\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u7528\u5b83\u521b\u5efa\u51fd\u6570\u3002PL/TclU \u51fd\u6570\u7684\u4f5c\u8005\u5fc5\u987b\u786e\u4fdd\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u4e8e\u6267\u884c\u975e\u9884\u671f\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u6267\u884c\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u6267\u884c\u7684\u4efb\u4f55\u64cd\u4f5c\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u5728\u5b89\u88c5\u8fc7\u7a0b\u7684\u914d\u7f6e\u6b65\u9aa4\u4e2d\u6307\u5b9a\u4e86 Tcl \u652f\u6301\uff0cPL/Tcl \u548c PL/TclU \u8c03\u7528\u5904\u7406\u5668\u7684\u5171\u4eab\u5bf9\u8c61\u4ee3\u7801\u4f1a\u81ea\u52a8\u6784\u5efa\uff0c\u5e76\u5b89\u88c5\u5230 PostgreSQL \u5e93\u76ee\u5f55\u4e2d\u3002\u8981\u5728\u7279\u5b9a\u6570\u636e\u5e93\u4e2d\u5b89\u88c5 PL/Tcl \u548c\uff0f\u6216 PL/TclU\uff0c\u53ef\u4f7f\u7528 CREATE EXTENSION \u547d\u4ee4\uff0c\u4f8b\u5982 CREATE EXTENSION pltcl \u6216 CREATE EXTENSION pltclu\u3002</p>\n</div>", "manual_path": "/docs/19/pltcl-overview.html", "localization": {"status": "complete", "sources": [{"url": "/docs/19/pltcl-config.html", "method": "same-major semantic node", "sha256": "10fc954500967a917093cf035552ac8198291395d181ce21737a4e027475587a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-data.html", "method": "same-major semantic node", "sha256": "84628a196e2d3b0005054e1367bda1b953087d595219ad7ce66d01e2d4f79d69", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "bf1d7a8525e842600f5d7230a70b1c5e9b3c9c395952b3f9c781c3e3171b85c0", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "2656114f3e00b40c571607b76b591b4da00269bd0fcc4ad90839f51de245356e", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "e49f420595493fd8a9d0852c60b4620ff8a4c3e0050839f0944f206a53927e38", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-functions.html", "method": "same-major semantic node", "sha256": "4bf399dc70df36b63dd534626cc1560f266ae671373dad51d37217f36bd33315", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-global.html", "method": "same-major semantic node", "sha256": "ce3869a533e8b9f46e8dd89d0dfc7aeecc8e8065bf0ac6edd210f1c255e20cd8", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-overview.html", "method": "same-major semantic node", "sha256": "ac600891232b53c4d53e83a3638ea9e6b63b4d935da13de87dc37df46b6cf066", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "f6d8a48b1d4229175d3a91a57b457cad6cee1d383306d593ef879085f0d553f8", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "8e4bc1d90eb33daf926bffaae124c8b5a0bdd2eca78d4f8888ea2088c8cd1220", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "31158f9aa706ef63668acbba6c8f5fba8c5df1d183120819265f51d9f5fb06d7", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/19/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "689d956b9c68e1042981e21c8c381d7abcbdc04cd44858c09f37d842c92ed562", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/19/description/0": "PL/TclU untrusted procedural language", "/versions/19/facts/0/label": "Kind", "/versions/19/facts/0/value": "Bundled procedural-language variant", "/versions/19/facts/1/label": "Family", "/versions/19/facts/2/label": "Trusted", "/versions/19/facts/3/label": "Handler", "/versions/19/facts/4/label": "Library", "/versions/19/facts/5/label": "Default version", "/versions/19/facts/6/label": "Module pathname", "/versions/19/facts/7/label": "Comment", "/versions/19/facts/7/value": "PL/TclU untrusted procedural language", "/versions/19/related/0/label": "pltcl-config", "/versions/19/related/1/label": "pltcl-data", "/versions/19/related/2/label": "pltcl-dbaccess", "/versions/19/related/3/label": "pltcl-error-handling", "/versions/19/related/4/label": "pltcl-event-trigger", "/versions/19/related/5/label": "pltcl-functions", "/versions/19/related/6/label": "pltcl-global", "/versions/19/related/7/label": "pltcl-overview", "/versions/19/related/8/label": "pltcl-procnames", "/versions/19/related/9/label": "pltcl-subtransactions", "/versions/19/related/10/label": "pltcl-transactions", "/versions/19/related/11/label": "pltcl-trigger", "/versions/19/sections/0/title": "Installation definition from the matching source archive", "/versions/19/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "75a520c231621221e6e87310971344faa8254ba76eedf7d3a94852a391294449"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh"}, "20": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/devel/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/devel/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/devel/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/devel/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/devel/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/devel/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/devel/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/devel/pltcl-overview.html", "label": "\u6982\u8ff0"}, {"url": "/docs/devel/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/devel/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/devel/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/devel/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "20devel", "major": "20", "channel": "devel", "revision": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41", "source_sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41", "catalog_fingerprint": "398fbb9f262264053c02fbf79f88be0a6770c1473faa6ecd5931d6ec41b8258b", "source_snapshot_utc": "26-Sep-2026 20:22"}, "sources": [{"url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}, {"url": "https://pg.center/docs/devel/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 20 English manual", "sha256": "be4900cfa48ffd7364d446d8660cda81d3bed714764d1f195e1f2efd6e65c5f6", "language": "en", "original_url": "/docs/devel/pltcl-overview.html"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"], "manual_html": "<div class=\"sect1\" id=\"PLTCL-OVERVIEW\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">42.1. \u6982\u8ff0</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">PL/Tcl \u63d0\u4f9b\u4e86 C \u8bed\u8a00\u51fd\u6570\u4f5c\u8005\u6240\u62e5\u6709\u7684\u5927\u591a\u6570\u80fd\u529b\uff0c\u4f46\u6709\u5c11\u91cf\u9650\u5236\uff0c\u540c\u65f6\u589e\u52a0\u4e86 Tcl \u5f3a\u5927\u7684\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002</p>\n<p lang=\"zh\">\u4e00\u4e2a\u6709\u76ca\u7684\u9650\u5236\u662f\uff1a\u6240\u6709\u64cd\u4f5c\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u4e0a\u4e0b\u6587\u7684\u5b89\u5168\u8fb9\u754c\u5185\u6267\u884c\u3002\u9664\u5b89\u5168 Tcl \u7684\u6709\u9650\u547d\u4ee4\u96c6\u5916\uff0c\u4ec5\u63d0\u4f9b\u5c11\u91cf\u547d\u4ee4\uff0c\u7528\u4e8e\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u6216\u901a\u8fc7 elog() \u62a5\u544a\u6d88\u606f\u3002PL/Tcl \u65e0\u6cd5\u50cf C \u51fd\u6570\u90a3\u6837\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\uff0c\u4e5f\u65e0\u6cd5\u4ee5 PostgreSQL \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u65e0\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u6b64\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f1a\u8d4b\u4e88\u4ed6\u4eec\u4e0d\u53d7\u9650\u5236\u7684\u6743\u9650\u3002</p>\n<p lang=\"zh\">\u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff1a\u4e0d\u80fd\u7528 Tcl \u51fd\u6570\u521b\u5efa\u65b0\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\uff0f\u8f93\u51fa\u51fd\u6570\u3002</p>\n<p lang=\"zh\">\u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u53d1\u9001\u90ae\u4ef6\u7684 Tcl \u51fd\u6570\u3002\u4e3a\u6b64\uff0cPL/Tcl \u63d0\u4f9b\u4e86\u540d\u4e3a PL/TclU \u7684\u53d8\u4f53\uff0c\u5373\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\u3002\u9664\u4f7f\u7528\u5b8c\u6574 Tcl \u89e3\u91ca\u5668\u5916\uff0c\u4e24\u8005\u8bed\u8a00\u5b8c\u5168\u76f8\u540c\u3002PL/TclU \u5fc5\u987b\u5b89\u88c5\u4e3a\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00\uff0c\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u7528\u5b83\u521b\u5efa\u51fd\u6570\u3002PL/TclU \u51fd\u6570\u7684\u4f5c\u8005\u5fc5\u987b\u786e\u4fdd\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u4e8e\u6267\u884c\u975e\u9884\u671f\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u6267\u884c\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u6267\u884c\u7684\u4efb\u4f55\u64cd\u4f5c\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u5728\u5b89\u88c5\u8fc7\u7a0b\u7684\u914d\u7f6e\u6b65\u9aa4\u4e2d\u6307\u5b9a\u4e86 Tcl \u652f\u6301\uff0cPL/Tcl \u548c PL/TclU \u8c03\u7528\u5904\u7406\u5668\u7684\u5171\u4eab\u5bf9\u8c61\u4ee3\u7801\u4f1a\u81ea\u52a8\u6784\u5efa\uff0c\u5e76\u5b89\u88c5\u5230 PostgreSQL \u5e93\u76ee\u5f55\u4e2d\u3002\u8981\u5728\u7279\u5b9a\u6570\u636e\u5e93\u4e2d\u5b89\u88c5 PL/Tcl \u548c\uff0f\u6216 PL/TclU\uff0c\u53ef\u4f7f\u7528 CREATE EXTENSION \u547d\u4ee4\uff0c\u4f8b\u5982 CREATE EXTENSION pltcl \u6216 CREATE EXTENSION pltclu\u3002</p>\n</div>", "manual_path": "/docs/devel/pltcl-overview.html", "localization": {"status": "complete", "sources": [{"url": "/docs/devel/pltcl-config.html", "method": "same-major semantic node", "sha256": "06b448ec1ced3e28733dfea9f6e4ac5b5e9360d20d47fdc27aed140c59f822a9", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-data.html", "method": "same-major semantic node", "sha256": "2c3acd01e7a7b62f65e1c2370293cc503761aaa563c52f6f2f76d9e8f5f1c160", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "ce635078d9001203155754ba099bbb5e1e4221e9b98149fdbaaba21b2f550f6b", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "128178bca5da7c1f5a7be1e94effd48cc5be2a1f1647d76a4e12c6be99cab73b", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "cbd0f8b5d1514bdd204374c2a88f18e7a6a1c4e27e1e2aa96d95c0d629191960", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-functions.html", "method": "same-major semantic node", "sha256": "cc7a04bfde78a0169964ccf6f52e65bf79cbc85bcb1d5a7982dc8c8ae56aeeae", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-global.html", "method": "same-major semantic node", "sha256": "5f48c1912f0570e344813a1412b5bc42cac3621f44ed1b93c3e759185b7366af", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-overview.html", "method": "same-major semantic node", "sha256": "7c505ff44f28035c3bac2e1283936fd4e009ec4b2b0626ba0628fb6574661eda", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "316070347877bcaa997f7c7a90bb3c945727f58a42c35f2ee67ab0314e34866b", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "5a249a3eeaf3d9fc221c1a095e38c42a4b9a9605564236d7029019004dab0c78", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "56bbd1665c877fcbcd84cfad692679a8831efd59733cfcf90d6dfa0270653cf5", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/devel/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "b704934f08551a2cf0c619813aea7254302bee187534f0a5eda1db03d16feab2", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/summary": "PL/TclU untrusted procedural language", "/versions/20/description/0": "PL/TclU untrusted procedural language", "/versions/20/facts/0/label": "Kind", "/versions/20/facts/0/value": "Bundled procedural-language variant", "/versions/20/facts/1/label": "Family", "/versions/20/facts/2/label": "Trusted", "/versions/20/facts/3/label": "Handler", "/versions/20/facts/4/label": "Library", "/versions/20/facts/5/label": "Default version", "/versions/20/facts/6/label": "Module pathname", "/versions/20/facts/7/label": "Comment", "/versions/20/facts/7/value": "PL/TclU untrusted procedural language", "/versions/20/related/0/label": "pltcl-config", "/versions/20/related/1/label": "pltcl-data", "/versions/20/related/2/label": "pltcl-dbaccess", "/versions/20/related/3/label": "pltcl-error-handling", "/versions/20/related/4/label": "pltcl-event-trigger", "/versions/20/related/5/label": "pltcl-functions", "/versions/20/related/6/label": "pltcl-global", "/versions/20/related/7/label": "pltcl-overview", "/versions/20/related/8/label": "pltcl-procnames", "/versions/20/related/9/label": "pltcl-subtransactions", "/versions/20/related/10/label": "pltcl-transactions", "/versions/20/related/11/label": "pltcl-trigger", "/versions/20/sections/0/title": "Installation definition from the matching source archive", "/versions/20/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "f1a2ddf768a7826d96428642bc2b2a096d7798589b223e37b9ba9a975dad65e3"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh"}}}, "snapshot": {"facts": [{"label": "\u79cd\u7c7b", "value": "\u968f\u6e90\u7801\u63d0\u4f9b\u7684\u8fc7\u7a0b\u8bed\u8a00\u53d8\u4f53"}, {"label": "\u64cd\u4f5c\u7b26\u5bb6\u65cf", "value": "PL/Tcl"}, {"label": "\u53ef\u4fe1", "value": "f"}, {"label": "\u5904\u7406\u51fd\u6570", "value": "pltclu_call_handler"}, {"label": "\u5e93", "value": "$libdir/pltcl"}, {"label": "\u9ed8\u8ba4\u7248\u672c", "value": "1.0"}, {"label": "\u6a21\u5757\u8def\u5f84", "value": "$libdir/pltcl"}, {"label": "\u6ce8\u91ca", "value": "PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"}], "tables": [], "aliases": [], "related": [{"url": "/docs/18/pltcl-config.html", "label": "PL/Tcl \u914d\u7f6e"}, {"url": "/docs/18/pltcl-data.html", "label": "PL/Tcl \u4e2d\u7684\u6570\u636e\u503c"}, {"url": "/docs/18/pltcl-dbaccess.html", "label": "\u4ece PL/Tcl \u8bbf\u95ee\u6570\u636e\u5e93"}, {"url": "/docs/18/pltcl-error-handling.html", "label": "PL/Tcl \u4e2d\u7684\u9519\u8bef\u5904\u7406"}, {"url": "/docs/18/pltcl-event-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u4e8b\u4ef6\u89e6\u53d1\u5668\u51fd\u6570"}, {"url": "/docs/18/pltcl-functions.html", "label": "PL/Tcl \u51fd\u6570\u548c\u53c2\u6570"}, {"url": "/docs/18/pltcl-global.html", "label": "PL/Tcl \u4e2d\u7684\u5168\u5c40\u6570\u636e"}, {"url": "/docs/18/pltcl-overview.html", "label": "\u6982\u8ff0"}, {"url": "/docs/18/pltcl-procnames.html", "label": "Tcl \u8fc7\u7a0b\u540d"}, {"url": "/docs/18/pltcl-subtransactions.html", "label": "PL/Tcl \u4e2d\u7684\u663e\u5f0f\u5b50\u4e8b\u52a1"}, {"url": "/docs/18/pltcl-transactions.html", "label": "\u4e8b\u52a1\u7ba1\u7406"}, {"url": "/docs/18/pltcl-trigger.html", "label": "PL/Tcl \u4e2d\u7684\u89e6\u53d1\u5668\u51fd\u6570"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "catalog_fingerprint": "65c93d6048ef30e61023a84f9680fa6a92b1c383b7eb226741170077eb078502"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://pg.center/docs/18/pltcl-overview.html", "path": "pltcl-overview.html", "label": "PostgreSQL 18 English manual", "sha256": "ed93c7e7682e446657a8c944dbabdabb0236e2d09c48db1c7e804270ce480044", "language": "en", "original_url": "/docs/18/pltcl-overview.html"}], "sections": [{"code": "/* src/pl/tcl/pltclu--1.0.sql */\n\nCREATE FUNCTION pltclu_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE LANGUAGE pltclu\n  HANDLER pltclu_call_handler;\n\nCOMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';", "title": "\u540c\u6784\u5efa\u6e90\u7801\u4e2d\u7684\u5b89\u88c5\u5b9a\u4e49", "paragraphs": ["\u6b64\u6269\u5c55\u968f\u6e90\u7801\u63d0\u4f9b\uff1b\u6536\u5f55\u5b83\u5e76\u4e0d\u8868\u793a\u5df2\u5b89\u88c5\u8be5\u8bed\u8a00\u6216\u5916\u90e8\u8fd0\u884c\u65f6\u3002"]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "comment": "PL/TclU untrusted procedural language", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0", "module_pathname": "$libdir/pltcl"}, "description": ["PL/TclU \u975e\u53ef\u4fe1\u8fc7\u7a0b\u8bed\u8a00"], "manual_html": "<div class=\"sect1\" id=\"PLTCL-OVERVIEW\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">42.1. \u6982\u8ff0</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\">PL/Tcl \u63d0\u4f9b\u4e86 C \u8bed\u8a00\u51fd\u6570\u4f5c\u8005\u6240\u62e5\u6709\u7684\u5927\u591a\u6570\u80fd\u529b\uff0c\u4f46\u6709\u5c11\u91cf\u9650\u5236\uff0c\u540c\u65f6\u589e\u52a0\u4e86 Tcl \u5f3a\u5927\u7684\u5b57\u7b26\u4e32\u5904\u7406\u5e93\u3002</p>\n<p lang=\"zh\">\u4e00\u4e2a\u6709\u76ca\u7684\u9650\u5236\u662f\uff1a\u6240\u6709\u64cd\u4f5c\u90fd\u5728 Tcl \u89e3\u91ca\u5668\u4e0a\u4e0b\u6587\u7684\u5b89\u5168\u8fb9\u754c\u5185\u6267\u884c\u3002\u9664\u5b89\u5168 Tcl \u7684\u6709\u9650\u547d\u4ee4\u96c6\u5916\uff0c\u4ec5\u63d0\u4f9b\u5c11\u91cf\u547d\u4ee4\uff0c\u7528\u4e8e\u901a\u8fc7 SPI \u8bbf\u95ee\u6570\u636e\u5e93\u6216\u901a\u8fc7 elog() \u62a5\u544a\u6d88\u606f\u3002PL/Tcl \u65e0\u6cd5\u50cf C \u51fd\u6570\u90a3\u6837\u8bbf\u95ee\u6570\u636e\u5e93\u670d\u52a1\u5668\u5185\u90e8\uff0c\u4e5f\u65e0\u6cd5\u4ee5 PostgreSQL \u670d\u52a1\u5668\u8fdb\u7a0b\u7684\u6743\u9650\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u3002\u56e0\u6b64\uff0c\u53ef\u4ee5\u4fe1\u4efb\u65e0\u7279\u6743\u6570\u636e\u5e93\u7528\u6237\u4f7f\u7528\u6b64\u8bed\u8a00\uff0c\u5b83\u4e0d\u4f1a\u8d4b\u4e88\u4ed6\u4eec\u4e0d\u53d7\u9650\u5236\u7684\u6743\u9650\u3002</p>\n<p lang=\"zh\">\u53e6\u4e00\u9879\u503c\u5f97\u6ce8\u610f\u7684\u5b9e\u73b0\u9650\u5236\u662f\uff1a\u4e0d\u80fd\u7528 Tcl \u51fd\u6570\u521b\u5efa\u65b0\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\uff0f\u8f93\u51fa\u51fd\u6570\u3002</p>\n<p lang=\"zh\">\u6709\u65f6\u9700\u8981\u7f16\u5199\u4e0d\u53d7\u5b89\u5168 Tcl \u9650\u5236\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u53d1\u9001\u90ae\u4ef6\u7684 Tcl \u51fd\u6570\u3002\u4e3a\u6b64\uff0cPL/Tcl \u63d0\u4f9b\u4e86\u540d\u4e3a PL/TclU \u7684\u53d8\u4f53\uff0c\u5373\u4e0d\u53d7\u4fe1\u4efb\u7684 Tcl\u3002\u9664\u4f7f\u7528\u5b8c\u6574 Tcl \u89e3\u91ca\u5668\u5916\uff0c\u4e24\u8005\u8bed\u8a00\u5b8c\u5168\u76f8\u540c\u3002PL/TclU \u5fc5\u987b\u5b89\u88c5\u4e3a\u4e0d\u53d7\u4fe1\u4efb\u7684\u8fc7\u7a0b\u8bed\u8a00\uff0c\u53ea\u6709\u6570\u636e\u5e93\u8d85\u7ea7\u7528\u6237\u624d\u80fd\u7528\u5b83\u521b\u5efa\u51fd\u6570\u3002PL/TclU \u51fd\u6570\u7684\u4f5c\u8005\u5fc5\u987b\u786e\u4fdd\u51fd\u6570\u4e0d\u4f1a\u88ab\u7528\u4e8e\u6267\u884c\u975e\u9884\u671f\u64cd\u4f5c\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u6267\u884c\u4ee5\u6570\u636e\u5e93\u7ba1\u7406\u5458\u8eab\u4efd\u767b\u5f55\u7684\u7528\u6237\u6240\u80fd\u6267\u884c\u7684\u4efb\u4f55\u64cd\u4f5c\u3002</p>\n<p lang=\"zh\">\u5982\u679c\u5728\u5b89\u88c5\u8fc7\u7a0b\u7684\u914d\u7f6e\u6b65\u9aa4\u4e2d\u6307\u5b9a\u4e86 Tcl \u652f\u6301\uff0cPL/Tcl \u548c PL/TclU \u8c03\u7528\u5904\u7406\u5668\u7684\u5171\u4eab\u5bf9\u8c61\u4ee3\u7801\u4f1a\u81ea\u52a8\u6784\u5efa\uff0c\u5e76\u5b89\u88c5\u5230 PostgreSQL \u5e93\u76ee\u5f55\u4e2d\u3002\u8981\u5728\u7279\u5b9a\u6570\u636e\u5e93\u4e2d\u5b89\u88c5 PL/Tcl \u548c\uff0f\u6216 PL/TclU\uff0c\u53ef\u4f7f\u7528 CREATE EXTENSION \u547d\u4ee4\uff0c\u4f8b\u5982 CREATE EXTENSION pltcl \u6216 CREATE EXTENSION pltclu\u3002</p>\n</div>", "manual_path": "/docs/18/pltcl-overview.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/pltcl-config.html", "method": "same-major semantic node", "sha256": "44bd7295431ce43082579fd75e325702d59ec6a7559637dcb4277a15e3955840", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-data.html", "method": "same-major semantic node", "sha256": "eae86495797a15ab7fc81a0e1df8c3c8cb0510541d92996034e044e253723661", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-dbaccess.html", "method": "same-major semantic node", "sha256": "d9d56737e09ec9777611f98bab439306e428fd067b6b78c48c683651df6d3fe8", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-error-handling.html", "method": "same-major semantic node", "sha256": "ebf08a10fce4b6ff4e80408187b64cd96ae2184f2a2d430ba219b2bea9c480b9", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-event-trigger.html", "method": "same-major semantic node", "sha256": "172bc7b8e8b9f630b6c0b21746889cd9f11be93da0ebdd643f9d1f7176ff5767", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-functions.html", "method": "same-major semantic node", "sha256": "f0170be36dcd273379209a05372b9faa548c84c8fa997643a70d3a77d017a632", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-global.html", "method": "same-major semantic node", "sha256": "e08c5f22c0a94e2e8a66299ba7de5f0d0ad0b5412e7df02f483dc8864bedcf2a", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-overview.html", "method": "same-major semantic node", "sha256": "76c5b1d72336e5f085d19de115704918382f35b19a5274fa14341d40986d2776", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-procnames.html", "method": "same-major semantic node", "sha256": "84665c1991422a305552b8511393ae7157d7e9c950218b0a12c9d5b46b79cb83", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-subtransactions.html", "method": "same-major semantic node", "sha256": "7f07515a70b3e8453088498a06f9b24b4725756c0819bd33aec4d9dc0299aa39", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-transactions.html", "method": "same-major semantic node", "sha256": "d88b8fc3f963a251e897c3943c5c2b85fe8431cf1e18a1a8824a460447bf839e", "language": "zh", "matched_nodes": ["page-title/h2"]}, {"url": "/docs/18/pltcl-trigger.html", "method": "same-major semantic node", "sha256": "a50a86f45b38e1891e93986f6dd04eaeaf9f85926c482e2b564740e54f69de7b", "language": "zh", "matched_nodes": ["page-title/h2"]}], "language": "zh", "original_text": {"/versions/18/description/0": "PL/TclU untrusted procedural language", "/versions/18/facts/0/label": "Kind", "/versions/18/facts/0/value": "Bundled procedural-language variant", "/versions/18/facts/1/label": "Family", "/versions/18/facts/2/label": "Trusted", "/versions/18/facts/3/label": "Handler", "/versions/18/facts/4/label": "Library", "/versions/18/facts/5/label": "Default version", "/versions/18/facts/6/label": "Module pathname", "/versions/18/facts/7/label": "Comment", "/versions/18/facts/7/value": "PL/TclU untrusted procedural language", "/versions/18/related/0/label": "pltcl-config", "/versions/18/related/1/label": "pltcl-data", "/versions/18/related/2/label": "pltcl-dbaccess", "/versions/18/related/3/label": "pltcl-error-handling", "/versions/18/related/4/label": "pltcl-event-trigger", "/versions/18/related/5/label": "pltcl-functions", "/versions/18/related/6/label": "pltcl-global", "/versions/18/related/7/label": "pltcl-overview", "/versions/18/related/8/label": "pltcl-procnames", "/versions/18/related/9/label": "pltcl-subtransactions", "/versions/18/related/10/label": "pltcl-transactions", "/versions/18/related/11/label": "pltcl-trigger", "/versions/18/sections/0/title": "Installation definition from the matching source archive", "/versions/18/sections/0/paragraphs/0": "This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "143984f67996e93595d13f35d264d808bfd4f91b9900c16857a3e3883e08bfbb"}, "source_files": {"src/pl/tcl/pltclu.control": "f8b2f8f3b14be8d14326913047eb320227f6891f6d303eecf300f0231ac853d4", "src/pl/tcl/pltclu--1.0.sql": "81990a8e4dd323fd70a2669dcbd33a9d74d250bc7a965790dee9d96b3f823d0c"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Tcl", "handler": "pltclu_call_handler", "library": "$libdir/pltcl", "trusted": "f", "validator": "", "inline_handler": "", "default_version": "1.0"}, "comparison_hash": "f76f2eec7aa9560ce301885f25a023a15137ef259d3f0536f267d92fdb9f3ffe", "manual_language": "zh"}, "comparison": {"left": "17", "right": "18", "status": "unchanged", "diff": ""}}