↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 过程语言 / PL/Tcl

pltclu

过程语言 pltclu。

当前查看 PostgreSQL 18。

中文定义与说明

过程语言 pltclu。

运算符族
PL/Tcl
处理函数
pltclu_call_handler
库
$libdir/pltcl
受信任
否
默认版本
1.0
模块路径
$libdir/pltcl

同版本中文手册节选

PL/Tcl 提供了函数编写者在 C 语言中所具备的大部分能力,但会施加少量限制,并额外提供 Tcl 可用的强大字符串处理库。

其中一个颇具吸引力的良性限制是,所有内容都在 Tcl 解释器的安全上下文中执行。除了安全 Tcl 受限的命令集之外,只提供了少数通过 SPI 访问数据库以及通过 elog() 发出消息的命令。与 C 函数不同,PL/Tcl 不提供访问数据库服务器内部机制的方法,也不能在 PostgreSQL 服务器进程的权限下获得操作系统级访问。因此,可以信任非特权数据库用户使用这种语言;它不会授予他们无限制的权限。

另一项值得注意的实现限制是,Tcl 函数不能用来为新数据类型创建输入/输出函数。

有时需要编写不受安全 Tcl 限制的 Tcl 函数。例如,可能希望某个 Tcl 函数能够发送电子邮件。为处理这类情况,PL/Tcl 提供了一个名为 PL/TclU 的变体(其中 U 表示不受信任的 Tcl)。除了使用完整的 Tcl 解释器之外,它与前者是完全相同的语言。如果使用 PL/TclU,就必须将其安装为一种不受信任的过程语言,这样就只有数据库超级用户才能在其中创建函数。PL/TclU 函数的编写者必须确保该函数不会被用来做任何不希望发生的事情,因为它能够执行任何以数据库管理员身份登录的用户所能做的事情。

查看完整中文手册与上下文。

说明

过程语言 pltclu。

种类
随源码提供的过程语言变体
操作符家族
PL/Tcl
可信
f
处理函数
pltclu_call_handler
库
$libdir/pltcl
默认版本
1.0
模块路径
$libdir/pltcl
注释
PL/TclU 非可信过程语言

同构建源码中的安装定义

此扩展随源码提供;收录它并不表示已安装该语言或外部运行时。

/* src/pl/tcl/pltclu--1.0.sql */

CREATE FUNCTION pltclu_call_handler() RETURNS language_handler
  LANGUAGE c AS 'MODULE_PATHNAME';

CREATE LANGUAGE pltclu
  HANDLER pltclu_call_handler;

COMMENT ON LANGUAGE pltclu IS 'PL/TclU untrusted procedural language';

相关条目

文档与源码

来源构建
版本
18.6
构建
https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
来源指纹
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f

版本比较

PostgreSQL 17 → 18: 无变化。

比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。

相关条目

导出 JSON · 返回过程语言 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。