在版本之间更改了hstore运算符优先级

时间:2017-02-20 13:29:31

标签: postgresql hstore

我发现了这个查询:

SELECT properties->'somekey' IS NOT DISTINCT FROM 'someValue' FROM myTable;

在PostgreSQL 9.5中有效,但在9.4中没有,它给出了这个错误:

  

错误:运算符不存在:hstore - >布尔

因此,显然->运算符的运算符在版本之间发生了变化。事实是,我在文档中找不到这个(甚至应该的优先级)。

有人可以对此有所了解吗?

1 个答案:

答案 0 :(得分:0)

我对相同的错误消息一度感到困惑。问题是Postgres首先评估'somekey' IS NOT DISTINCT FROM 'somevalue',然后使用该语句产生的布尔值作为在properties中查找的关键字,从而产生错误。您只需要更改

SELECT properties->'somekey' IS NOT DISTINCT FROM 'someValue' FROM myTable;

SELECT (properties->'somekey') IS NOT DISTINCT FROM 'someValue' FROM myTable;

以便该代码根据“ SQL标准”进行评估。