pg_pltemplate 为过程语言存储"模板"信息。一个语言的模板允许该语言可以在某个数据库里使用简单的 CREATE LANGUAGE 命令创建,而不需要声明实现细节。
和许多系统表不一样,pg_pltemplate 是在集群里的所有数据库之间共享的:每个集群只有一个 pg_pltemplate 的拷贝,而不是每个数据库一个。这样就允许这些信息在需要时每个数据库都可以访问。
表43-26. pg_pltemplate 字段
名字 | 类型 | 描述 | |
---|---|---|---|
tmplname | name | 这个模板所应用的语言的名字 | |
tmpltrusted | boolean | 如果语言被认为是可信的,则为真 | |
tmplhandler | text | 调用处理器函数的名字 | |
tmplvalidator | text | 校验函数的名字,如果没有则为 NULL | |
tmpllibrary | text | 实现语言的共享库的路径 | |
tmplacl | aclitem[] | 模板的访问权限(未使用) |
目前还没有任何命令可以用于操作过程语言模板;要修改内置的信息,超级用户必须使用普通的 INSERT, DELETE, UPDATE 命令修改该表。将来版本的 PostgreSQL 有可能提供一些命令来修改这些内容,以便更清晰些。
在实现的时候,tmplacl 字段将提供对模板自身的访问控制(也就是使用它创建一个语言的权限),而不是对那些从模板创建的语言的访问控制。