↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.3 / 7.2
历史版本。 PostgreSQL 7.2 已结束支持。 请参阅 当前版本手册.

17.5. 操作符类 #

下一个我们关心的表是 pg_opclass。这个表为给定索引访问方法所支持的每个操作符类定义操作符类名和输入数据类型。同一个类名可以用于多个不同的访问方法(例如,B-树和哈希访问方法都有名为 oid_ops 的操作符类),但每个访问方法必须在 pg_opclass 中有单独的一行。pg_opclass 行的 OID 被用作其他表中的外键,以把具体的操作符和支持例程与该操作符类关联起来。

你需要把带有你的操作符类名(例如 complex_abs_ops)的一行添加到 pg_opclass:

INSERT INTO pg_opclass (opcamid, opcname, opcintype, opcdefault, opckeytype)
    VALUES (
        (SELECT oid FROM pg_am WHERE amname = 'btree'),
        'complex_abs_ops',
        (SELECT oid FROM pg_type WHERE typname = 'complex'),
        true,
        0);

SELECT oid, *
    FROM pg_opclass
    WHERE opcname = 'complex_abs_ops';

  oid   | opcamid |     opcname     | opcintype | opcdefault | opckeytype
--------+---------+-----------------+-----------+------------+------------
 277975 |     403 | complex_abs_ops |    277946 | t          |          0
(1 row)

注意,你的 pg_opclass 行的 OID 会不同!不过不必担心。稍后我们会像这里获取类型的 OID 一样从系统中取得这个数。

上述示例假定你希望把这个新操作符类设为 complex 数据类型的默认 B-树操作符类。如果不是这样,只需把 opcdefault 设为 false 即可。opckeytype 在此不作描述;对 B-树操作符类它应当总是为零。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.