unknown
的命令PL/Tcl 使用时支持自动加载 Tcl 代码。它识别一个特殊的 pltcl_modules 表,该表被认为包含 Tcl 代码的模块。如果存在这个表,则在创建完解释器后马上从该表中抓取 unknown 模块并加载到 Tcl 解释器中。
因为 unknown 模块实际上可以包含任何你需要的初始化脚本,它通常是定义为一个 Tcl unknown
过程,在 Tcl 不能识别一个调用的过程名的时候就调用它。PL/Tcl这个过程的标准版本试图在 pltcl_modules 里找到一个定义所需要过程的模块。如果找到一个,那么把它加载入解释器,然后允许继续按照原来的过程调用处理。另外还定义了一个 pltcl_modfuncs 表,它提供了哪个函数由哪个模块定义的索引,因此查找过程相当快。
PostgreSQL 包括维护这些表的支持脚本:pltcl_loadmod, pltcl_listmod, pltcl_delmod 以及标准 share/unknown.pltcl 中 unknown 模块的源代码。这个模块必须一开始就加载入每个数据库才能支持自动加载机制。
表 pltcl_modules 和 pltcl_modfuncs 必需可以为所有人读取,但是把它做成只有数据库管理员可写并拥有是明智的。