pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
unknown command #PL/Tcl 支持在使用时自动装载 Tcl 代码。它会识别一张特殊的表 pltcl_modules,该表被假定包含若干 Tcl 代码模块。 如果这张表存在,模块unknown会从该表取出,并在 数据库会话中第一次执行 PL/Tcl 函数之前立即装载到 Tcl 解释器中。 (如果一个会话中使用了多个 Tcl 解释器,则对每个解释器分别执行这一 过程;参见第 40.4 节。)
虽然unknown模块实际上可以包含你需要的任何初始化 脚本,但它通常会定义一个 Tcl 的unknown过程,每当 Tcl 无法识别被调用的过程名时,就会调用该过程。PL/Tcl的这一过程的标准 版本会尝试在pltcl_modules中找到一个能够定义所需 过程的模块。如果找到了,就把它装载到解释器中,然后允许继续执行最初 尝试的过程调用。辅助表pltcl_modfuncs提供了哪个模块 定义了哪些函数的索引,使查找相当快速。
PostgreSQL发行版中包含用于维护这些表的 支持脚本:pltcl_loadmod、pltcl_listmod、 pltcl_delmod,以及标准unknown模块 的源代码,位于share/unknown.pltcl。要支持自动装载 机制,最初必须把这个模块装载到每个数据库中。
表pltcl_modules和pltcl_modfuncs 必须对所有用户可读,但最好只让数据库管理员拥有并可以写入它们。作为 一种安全预防措施,除非pltcl_modules由超级用户拥有, 否则 PL/Tcl 会忽略它(因而不尝试装载unknown模块)。 不过,如果你足够信任其他用户,可以把这张表的 UPDATE 权限授予他们。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。