У меня есть таблица postgresql, в которой есть столбец с типом данных = 'text', в котором мне нужно создать индекс, в котором тип этого столбца приведен к целому числу [ ]. Однако всякий раз, когда я пытаюсь это сделать, я получаю следующую ошибку:
ОШИБКА: функции в индексном выражении должны быть помечены как IMMUTABLE
Вот код:
create table test (a integer[], b text);
insert into test values ('{10,20,30}','{40,50,60}');
CREATE INDEX index_test on test USING GIN (( b::integer[] ));
Обратите внимание, что одним из возможных обходных путей является создание функции, которая помечен как IMMUTABLE, который принимает значение столбца и выполняет приведение типа внутри функции, но проблема (помимо добавления накладных расходов) заключается в том, что у меня есть много разных типов данных целевого массива (например, text [], int2 [] , int4 [] и т. д. ...), и было бы невозможно создать отдельную функцию для каждого потенциального типа данных целевого массива.