Man page - create_operator(7)
Manual
CREATE OPERATOR
NAMESYNOPSIS
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