【问题标题】:Create operator / function for custom type in PostgreSQL 9.2在 PostgreSQL 9.2 中为自定义类型创建运算符/函数
【发布时间】:2013-07-25 10:59:57
【问题描述】:

我有以下自定义类型:

CREATE TYPE param_range AS (  
    param smallint,
    range int4range
);  

下表:

CREATE TABLE test4
(
    id serial NOT NULL,
    geo point,
    ext param_range[]
)

以下索引:

CREATE INDEX ix_test4_geo ON test4 USING GIST ((geo));
CREATE INDEX ix_test4_ext on test4 USING GIN (ext);

GIN 索引需要自定义类型的运算符/函数。我该怎么做?

【问题讨论】:

    标签: postgresql postgresql-9.2 database-indexes custom-type


    【解决方案1】:

    GIN 索引不仅需要自定义运算符。它需要整个家族的运营商。基本上你需要:

    1. 请参阅有关 GIN 操作类的文档。

    2. 编写一组 IMMUTABLE 函数来处理这些问题。

    3. 根据这些函数编写一组运算符。

    4. 将它们绑定在一个自定义运算符类中。

    这不是一项简单、少量的工作。它需要相当多的时间(在你的类型的上下文中,“重叠”是什么意思?”所以你需要在设计阶段花费相当多的时间。

    基本上,如果您想要 GIST/GIN 支持,您设计的自定义类型不仅是为了存储,而且是为了操作目的。这是一个项目。

    【讨论】:

    • 谢谢克里斯。在深入研究了在线文档之后,当没有人回答时,我才意识到这一点。
    • 能否请您稍微扩展一下第 4 点?我在这里问过这个问题:stackoverflow.com/q/34407438/1319179
    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2018-01-26
    • 2017-10-07
    相关资源
    最近更新 更多