PostgreSQL 8.0.0 中文文档(PostgreSQL 中国制作) | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 36. PL/Tcl - Tcl 过程语言 | Fast Forward | Next |
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,以及标准unknown模块 share/unknown.pltcl 的源代码。 这个模块必须一开始就装载入每个数据库才能支持自动装载机制。
表 pltcl_modules 和 pltcl_modfuncs 必需可以为所有人读取, 但是把它做成只有数据库管理员可写并拥有是明智的。