Man page - create_language(7)

Manual

CREATE LANGUAGE

NAME
SYNOPSIS
DESCRIPTION 描 述
PARAMETERS 参 数
NOTES 注 意
EXAMPLES 例 子
COMPATIBILITY 兼 容 性
SEE ALSO 参 见
译 者


NAME

CREATE LANGUAGE - 定 义 一 种 新 的 过 程 语 言

SYNOPSIS

CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name
HANDLER call_handler [ VALIDATOR valfunction ]

DESCRIPTION 描 述

使 用 CREATE LANGUAGE, 一 个 PostgreSQL 用 户 可 以 在 PostgreSQL里 注 册 一 个 新 的 语 言 。 因 而 , 函 数 和 触 发 器 过 程 可 以 用 这 种 新 语 言 定 义 。 要 注 册 新 语 言 用 户 必 须 具 有 PostgreSQL 超 级 用 户 权 限 。

CREATE LANGUAGE 将 该 语 言 的 名 字 和 一 个 调 用 句 柄 关 联 起 来 , 而 该 调 用 句 柄 负 责 执 行 该 语 言 书 写 的 函 数 。 请 参 考 ‘‘User-Defined Functions’’ 获 取 有 关 语 言 调 用 句 柄 的 更 多 信 息 。

请 注 意 过 程 语 言 是 对 每 个 独 立 的 数 据 库 而 言 是 自 己 的 。 要 让 一 种 语 言 缺 省 时 可 以 为 所 有 数 据 库 获 得 , 那 你 应 该 把 它 安 装 到 template1 数 据 库 里 。

PARAMETERS 参 数

TRUSTED

TRUSTED 说 明 对 该 语 言 的 调 用 句 柄 是 安 全 的 ; 也 就 是 说 , 它 不 会 提 供 给 非 特 权 用 户 任 何 绕 过 访 问 限 制 的 能 力 。 如 果 忽 略 这 个 关 键 字 , 只 有 具 有 PostgreSQL 超 级 用 户 权 限 的 人 可 以 使 用 这 个 语 言 创 建 新 的 函 数 。

PROCEDURAL

这 是 个 没 有 用 的 字 。

name

新 的 过 程 化 语 言 的 名 称 。 语 言 名 是 大 小 写 无 关 的 。 这 个 名 字 应 该 在 数 据 库 的 所 有 语 言 中 唯 一 。

出 于 向 下 兼 容 的 原 因 , 这 个 名 字 可 以 用 单 引 号 包 围 。

HANDLER call_handler

call_handler 是 一 个 以 前 注 册 过 的 函 数 的 名 字 , 该 函 数 将 被 调 用 来 执 行 这 门 过 程 语 言 写 的 函 数 。 过 程 语 言 的 调 用 句 柄 必 须 用 一 种 编 译 语 言 书 写 , 比 如 C, 调 用 风 格 必 须 是 版 本 1 的 调 用 风 格 , 并 且 在 PostgreSQL 里 注 册 为 不 接 受 参 数 并 且 返 回 language_handler 类 型 的 函 数 , language_handler 是 用 于 将 函 数 声 明 为 调 用 句 柄 的 占 位 符 。

VALIDATOR valfunction

valfunction 是 一 个 已 经 注 册 的 函 数 的 名 字 , 在 用 该 语 言 创 建 新 函 数 的 时 候 将 调 用 它 来 校 验 新 函 数 。 如 果 没 有 声 明 校 验 函 数 , 那 么 建 立 新 函 数 的 时 候 就 不 会 检 查 它 。 校 验 函 数 必 须 接 受 一 个 类 型 为 oid 的 参 数 , 它 是 将 要 创 建 的 函 数 的 OID, 并 且 通 常 会 返 回 void。

校 验 函 数 通 常 会 检 查 函 数 体 , 看 看 看 有 没 有 语 法 错 误 , 但 是 它 也 可 以 查 看 函 数 的 其 它 属 性 , 比 如 该 语 言 是 否 不 能 处 理 某 种 参 数 类 型 。 要 发 出 一 个 错 误 , 校 验 函 数 应 该 用 elog() 函 数 。 该 函 数 的 返 回 值 将 被 忽 略 。

NOTES 注 意

这 条 命 令 通 常 不 应 该 由 用 户 直 接 执 行 。 对 于 PostgreSQL 版 本 里 提 供 的 过 程 语 言 , 我 们 应 该 使 用 createlang (1) 程 序 , 它 将 为 我 们 安 装 正 确 的 调 用 句 柄 。 ( createlang 也 会 在 内 部 调 用 CREATE LANGUAGE。 )

在 PostgreSQL 版 本 7.3 之 前 , 我 们 必 须 声 明 句 柄 函 数 返 回 占 位 类 型 opaque, 而 不 是 language_handler。 为 了 支 持 装 载 旧 的 转 储 文 件 , CREATE LANGUAGE 还 将 接 受 声 明 为 返 回 opaque 的 函 数 , 但 是 它 会 发 出 一 条 通 知 并 且 把 函 数 声 明 返 回 类 型 改 为 language_handler。

使 用 CREATE FUNCTION [ create_function (7)] 命 令 创 建 新 函 数 。

使 用 DROP LANGUAGE [ drop_language (7)], 或 者 更 好 是 droplang (1) 程 序 删 除 一 个 过 程 语 言 。

系 统 表 pg_language ( 参 阅 ‘‘System Catalogs’’) 记 录 了 更 多 有 关 当 前 安 装 的 过 程 语 言 的 信 息 。 createlang 也 有 一 个 选 项 列 出 已 安 装 的 语 言 。

目 前 , 除 了 权 限 之 外 , 一 种 过 程 语 言 创 建 之 后 它 的 定 义 就 不 能 再 更 改 。

要 使 用 一 种 过 程 语 言 , 用 户 必 须 被 赋 予 USAGE 权 限 。 如 果 该 语 言 已 知 是 可 信 的 , 那 么 createlang 程 序 自 动 给 每 个 人 赋 予 权 限 。

EXAMPLES 例 子

下 面 两 条 顺 序 执 行 的 命 令 将 注 册 一 门 新 的 过 程 语 言 及 其 关 联 的 调 用 句 柄 。

CREATE FUNCTION plsample_call_handler() RETURNS language_handler
AS ’$libdir/plsample’
LANGUAGE C;
CREATE LANGUAGE plsample
HANDLER plsample_call_handler;

COMPATIBILITY 兼 容 性

CREATE LANGUAGE 是 PostgreSQL 扩 展 。

SEE ALSO 参 见

ALTER LANGUAGE [ alter_language (7)], CREATE FUNCTION [ create_function (l)], DROP LANGUAGE [ drop_language (l)], GRANT [ grant (l)], REVOKE [ revoke (l)], createlang (1), droplang (1)

译 者

Postgresql 中 文 网 站 何 伟 平 <laser@pgsqldb.org>

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。
中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh