Сравнение Postgresql Enum не работает для одного конкретного типа - PullRequest
0 голосов
/ 24 июня 2019

Невозможно сравнить два (одинаковых) типа enum . Если я запускаю команду ...

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 Ответ

1 голос
/ 25 июня 2019

Так что, похоже, это результат CAST функции, которую я до сих пор не понимаю, почему.

Был [неявный] CAST от данного типа до JSON / JSONb.Я предполагаю, что PostgreSQL конвертировал в JSONB / JSONB и сравнивал это с ошибками (что понятно), но в выводе об ошибке ничего не упоминалось о JSON.

В любом случае, после удаления приведения(или, по крайней мере, сделав это ON ASSIGNMENT), похоже, теперь оно работает.

Сумасшедший ... но полезно знать.

...