↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4
历史版本。 PostgreSQL 8.2 已结束支持。 请参阅 当前版本手册.

38.7. Modules and the unknown command #

PL/Tcl 支持在使用时自动装载 Tcl 代码。它会识别一张特殊的表 pltcl_modules,该表被假定包含若干 Tcl 代码模块。如果这张表存在,模块unknown会从该表取出,并在数据库会话中第一次执行 PL/Tcl 函数之前立即装载到 Tcl 解释器中。(如果一个会话中使用了多个 Tcl 解释器,则对每个解释器分别执行这一过程;参见第 38.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 权限授予他们。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.