PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

52.4. pg_amop #

目录 pg_amop 存储关于与访问方法操作符族 关联的操作符的信息。作为某个操作符族成员的每个操作符各有一行。 族成员既可以是搜索操作符, 也可以是排序操作符。 一个操作符可以出现在多个族中,但在一个族内不能出现在多个搜索位置, 也不能出现在多个排序位置。(一个操作符同时用于搜索和排序是允许的, 尽管不太常见。)

Table 52.4. \1 字段列说明

Column Type

Description

oid oid

Row identifier

amopfamily oid (references pg_opfamily.oid)

本条目所属的操作符族

amoplefttype oid (references pg_type.oid)

操作符的左手边输入数据类型

amoprighttype oid (references pg_type.oid)

操作符的右手边输入数据类型

amopstrategy int2

Operator strategy number

amoppurpose char

操作符的用途,s 表示搜索,o 表示排序

amopopr oid (references pg_operator.oid)

操作符的 OID

amopmethod oid (references pg_am.oid)

操作符族所属的索引访问方法

amopsortfamily oid (references pg_opfamily.oid)

如果是排序操作符,本条目据此排序的 B 树操作符族; 如果是搜索操作符则为零


一个“搜索”操作符条目表明,可以搜索这个操作符族的索引, 找出所有满足 WHERE indexed_column operator constant 的行。 显然,这样的操作符必须返回 boolean, 且其左侧输入类型必须与索引列的数据类型匹配。

一个“排序”操作符条目表明,可以扫描这个操作符族的索引, 按 ORDER BY indexed_column operator constant 所表示的顺序返回行。这样的操作符可以返回任何可排序的数据类型, 不过同样,其左侧输入类型必须与索引列的数据类型匹配。 ORDER BY 的确切语义由 amopsortfamily 列指定, 该列必须引用该操作符结果类型的一个 B 树操作符族。

Note

目前,假定排序操作符的排序顺序就是被引用操作符族的默认顺序, 即 ASC NULLS LAST。将来某天也许会通过增加额外的列来显式指定排序选项, 从而放宽这一假设。

条目的 amopmethod 必须与其所在操作符族的 opfmethod 匹配(在此包含 amopmethod 是为了性能而对目录结构 所做的有意反规范化)。此外, amoplefttype 和 amoprighttype 必须与被引用的 pg_operator 条目的 oprleft 和 oprright 字段匹配。