我有一个带有 HSTORE 列“ext”的表,其中值是 int4range。一个例子:
"p1"=>"[10, 18]", "p2"=>"[24, 32]", "p3"=>"[29, 32]", "p4"=>"[18, 19]"
但是,当我尝试对此创建表达式索引时,出现错误:
CREATE INDEX ix_test3_p1
ON test3
USING gist
(((ext -> 'p1'::text)::int4range));
错误:数据类型文本没有访问方法“gist”的默认运算符类 SQL 状态:42704 提示:您必须为索引指定运算符类或为数据类型定义默认运算符类。
如何为此创建运算符?
笔记
每条记录都可能有自己唯一的一组键。每个键代表一个属性,值代表值范围。所以并不是所有的记录都会有“p1”。考虑这是 hstore 中的 EAV 模型。