Man page - create_operator(7)

Manual

CREATE OPERATOR

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


NAME

CREATE OPERATOR - 定 义 一 个 新 的 操 作 符

SYNOPSIS

CREATE OPERATOR name (
PROCEDURE = funcname
[, LEFTARG = lefttype ] [, RIGHTARG = righttype ]
[, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]
[, RESTRICT = res_proc ] [, JOIN = join_proc ]
[, HASHES ] [, MERGES ]
[, SORT1 = left_sort_op ] [, SORT2 = right_sort_op ]
[, LTCMP = less_than_op ] [, GTCMP = greater_than_op ]
)

DESCRIPTION 描 述

CREATE OPERATOR 定 义 一 个 新 的 操 作 符 , name。 定 义 该 操 作 符 的 用 户 成 为 其 所 有 者 。 如 果 给 出 了 一 个 模 式 名 , 那 么 该 操 作 符 将 在 指 定 的 模 式 中 创 建 。 否 则 它 会 在 当 前 模 式 中 创 建 。

操 作 符 name 是 一 个 最 多 NAMEDATALEN-1 长 的 ( 缺 省 为 63 个 ) 下 列 字 符 组 成 的 字 串 :

+ - * / < > = ˜ ! @ # % ˆ & | ‘ ?

你 选 择 名 字 的 时 候 有 几 个 限 制 :

-- 和 /* 不 能 在 操 作 符 名 字 的 任 何 地 方 出 现 , 因 为 它 们 会 被 认 为 是 一 个 注 释 的 开 始 。

一 个 多 字 符 的 操 作 符 名 字 不 能 以 + 或 - 结 尾 , 除 非 该 名 字 还 包 含 至 少 下 面 字 符 之 一 :

˜ ! @ # % ˆ & | ‘ ?

例 如 , @- 是 一 个 允 许 的 操 作 符 名 , 但 *- 不 是 。 这 个 限 制 允 许 PostgreSQL 分 析 SQL-有 问 题 的 查 询 而 不 要 求 在 符 号 之 间 有 空 白 。

操 作 符 != 在 输 入 时 映 射 成 <>, 因 此 这 两 个 名 称 总 是 相 等 的 。

至 少 需 要 定 义 一 个 LEFTARG或 RIGHTARG。 对 于 双 目 操 作 符 来 说 , 两 者 都 需 要 定 义 。 对 右 目 操 作 符 来 说 , 只 需 要 定 义 LEFTARG, 而 对 于 左 目 操 作 符 来 说 , 只 需 要 定 义 RIGHTARG。

同 样 , funcname 过 程 必 须 已 经 用 CREATE FUNCTION 定 义 过 , 而 且 必 须 定 义 为 接 受 正 确 数 量 的 指 定 类 型 参 数 ( 一 个 或 是 两 个 ) 。

其 它 子 句 声 明 可 选 的 操 作 符 优 化 子 句 。 他 们 的 含 义 在 ‘‘User-Defined Operators’’ 里 定 义 。

PARAMETERS 参 数

name

要 定 义 的 操 作 符 名 字 。 可 用 的 字 符 见 上 文 。 其 名 字 可 以 用 模 式 修 饰 , 比 如 CREATE OPERATOR myschema.+ (...)。 如 果 没 有 模 式 , 则 在 当 前 模 式 中 创 建 操 作 符 。 同 一 个 模 式 中 的 两 个 操 作 符 可 以 有 一 样 的 名 字 , 只 要 他 们 操 作 不 同 的 数 据 类 型 。 这 叫 做 重 载 。

funcname

用 于 实 现 该 操 作 符 的 函 数 。

lefttype

如 果 存 在 的 话 , 操 作 符 左 手 边 的 参 数 类 型 。 如 果 是 左 目 操 作 符 , 这 个 参 数 可 以 省 略 。

righttype

如 果 存 在 的 话 , 操 作 符 右 手 边 的 参 数 类 型 。 如 果 是 右 目 操 作 符 , 这 个 参 数 可 以 省 略 。

com_op

该 操 作 符 对 应 的 交 换 ( commutator) 操 作 符 。

neg_op

对 应 的 负 操 作 符 。

res_proc

此 操 作 符 约 束 选 择 性 计 算 函 数 。

join_proc

此 操 作 符 连 接 选 择 性 计 算 函 数 。

HASHES

表 明 此 操 作 符 支 持 哈 希 ( 散 列 ) 连 接 。

MERGES

表 明 此 操 作 符 可 以 支 持 一 个 融 合 连 接 。

left_sort_op

如 果 此 操 作 符 支 持 融 合 连 接 ( join) , 此 操 作 符 的 左 手 边 数 据 的 排 序 操 作 符 。

right_sort_op

如 果 此 操 作 符 支 持 融 合 连 接 ( join) , 此 操 作 符 的 右 手 边 数 据 的 排 序 操 作 符 。

less_than_op

如 果 这 个 操 作 符 可 以 支 持 融 合 连 接 , 那 么 这 就 是 比 较 这 个 操 作 符 的 输 入 数 据 类 型 的 小 于 操 作 符 。

greater_than_op

如 果 这 个 操 作 符 不 支 持 融 合 连 接 , 那 么 这 就 是 比 较 输 入 这 个 操 作 符 的 数 据 类 型 的 大 于 操 作 符 。

要 在 com_op 或 者 其 它 可 选 参 数 里 给 出 一 个 模 式 修 饰 的 操 作 符 名 , 使 用 OPERATOR() 语 法 , 比 如

COMMUTATOR = OPERATOR(myschema.===) ,

NOTES 注 意

请 参 阅 ‘‘User-Defined Operators’’ 中 操 作 符 章 节 获 取 更 多 信 息 。

请 使 用 DROP OPERATOR 从 数 据 库 中 删 除 用 户 定 义 操 作 符 。

EXAMPLES 例 子

下 面 命 令 定 义 一 个 新 操 作 符 , 面 积 相 等 , 用 于 box 数 据 类 型 。

CREATE OPERATOR === (
LEFTARG = box,
RIGHTARG = box,
PROCEDURE = area_equal_procedure,
COMMUTATOR = ===,
NEGATOR = !==,
RESTRICT = area_restriction_procedure,
JOIN = area_join_procedure,
HASHES,
SORT1 = <<<,
SORT2 = <<<
-- 因 为 给 出 了 排 序 操 作 符 , 索 引 隐 含 地 有 MERGES。
-- LTCMP 和 GTCMP 分 别 假 设 是 < 和 >
);

COMPATIBILITY 兼 容 性

CREATE OPERATOR 是 PostgreSQL 扩 展 。 在 SQL标 准 中 没 有 CREATE OPERATOR 语 句 。

译 者

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

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