pltclu
PL/TCL 存储过程语言(未受信/高权限)
概览
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|
| 3240 | pltcl | 否 | 是 | 否 | 是 | 是 | 否 | pg_catalog |
| 3250 | pltclu | 否 | 否 | 否 | 是 | 否 | 否 | pg_catalog |
版本
| PG18 | PG17 | PG16 | PG15 | PG14 |
|---|
| 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
安装
提示:这是 PostgreSQL 内核自带的 contrib 扩展
用法
pltclu: PL/Tcl 不受信过程语言
PL/Tcl 不受信版本提供完整的 Tcl 功能,包括文件系统访问和外部程序执行。只有超级用户可以使用此语言创建函数。
CREATE EXTENSION pltclu;
-- 从服务器文件系统读取文件
CREATE FUNCTION read_file(filename text) RETURNS text
LANGUAGE pltclu AS $$
set fd [open $1 r]
set content [read $fd]
close $fd
return $content
$$;
-- 执行外部命令
CREATE FUNCTION run_command(cmd text) RETURNS text
LANGUAGE pltclu AS $$
return [exec {*}$1]
$$;
-- 访问环境变量
CREATE FUNCTION get_env(varname text) RETURNS text
LANGUAGE pltclu AS $$
if {[info exists ::env($1)]} {
return $::env($1)
}
return ""
$$;
SELECT get_env('HOME');