PostgreSQL枚举比较不适用于一种特定类型

时间:2019-06-24 08:26:47

标签: postgresql enums operators

似乎无法比较两个(相同)枚举类型。如果我运行命令...

SELECT 'test'::core.mytype = 'test'::core.mytype;

它给出了以下错误...

ERROR:  42725: operator is not unique: core.mytype = core.mytype
LINE 1: SELECT 'test'::core.mytype = 'test'::core.mytype;
                                   ^
HINT:  Could not choose a best candidate operator. You might need to add explicit type casts.
LOCATION:  op_error, parse_oper.c:718

如果我在另一个Enum类型上尝试此方法,则它工作得很好,似乎就是这种特定类型。不仅如此,而且我确定我已经在另一个函数中使用比较了几周了。

我是否缺少某些东西,或者可能被意外删除了?

1 个答案:

答案 0 :(得分:1)

因此,这似乎是CAST函数的结果,我仍然不明白为什么。

从给定类型到JSON / JSONb,有一个[隐式] CAST。我假设PostgreSQL正在转换为JSONB / JSONB并将其与失败进行比较(这是可以理解的),但是错误输出没有提及JSON

无论如何,在删除演员表(或至少使其成为ON ASSIGNMENT)之后,它现在似乎可以工作了。

疯狂...但是很高兴知道。