51.4. pg_amop

目录pg_amop存储有关与访问方法运算符系列相关联的运算符的信息。作为操作员系列成员的每个操作员都有一行。家庭成员可以是* search 运算符或 ordering *运算符。一个操作员可以出现在多个家庭中,但不能出现在一个家庭中的一个以上搜索位置或一个 Order 位置。 (虽然不太可能,但允许操作员同时用于搜索和 Order.)

表 51.4. pg_amop

NameTypeReferencesDescription
oidoid 行标识符(隐藏属性;必须显式选择)
amopfamilyoidpg_opfamily.oid此项的运算符家庭
amoplefttypeoidpg_type.oid运算符的左手 Importing 数据类型
amoprighttypeoidpg_type.oid运算符的右侧 Importing 数据类型
amopstrategyint2 运算符策略编号
amoppurposechar 出于运算符目的,s用于搜索或o用于 Order
amopoproidpg_operator.oid运算符的 OID
amopmethodoidpg_am.oid索引访问方法运算符族适用于
amopsortfamilyoidpg_opfamily.oidB-tree 运算符族,该条目根据是否为 Order 运算符进行排序;如果搜索运算符,则为零

“搜索”运算符条目指示可以搜索该运算符系列的索引,以找到满足WHERE * indexed_column * * operator * * constant *的所有行。显然,此类运算符必须返回boolean,并且其左侧 Importing 类型必须与索引的列数据类型匹配。

“排序”运算符条目指示可以对该运算符系列的索引进行扫描,以按ORDER BY * indexed_column * * operator * * constant *表示的 Sequences 返回行。这样的运算符可以返回任何可排序的数据类型,尽管其左手 Importing 类型必须再次与索引的列数据类型匹配。 ORDER BY的确切语义由amopsortfamily列指定,该列必须引用 B 树运算符族作为运算符的结果类型。

Note

目前,假设排序运算符的排序 Sequences 是所引用运算符系列(即ASC NULLS LAST)的默认设置。有朝一日,可以通过添加其他列来显式指定排序选项来放松这种情况。

条目的amopmethod必须与其包含的运算符系列的opfmethod相匹配(包括amopmethod,这是出于性能原因而故意对目录结构进行非规范化)。同样,amoplefttypeamoprighttype必须与引用的pg_operator条目的oprleftoprright字段匹配。