У меня есть таблица postgresql, в которой есть столбец с типом данных = 'text', в котором мне нужно создать индекс, в котором этот столбец будет приведен к типу integer []. Однако всякий раз, когда я пытаюсь это сделать, я получаю следующую ошибку:
ОШИБКА: функции в выражении индекса должны быть помечены 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 [] и т. д.), и было бы невозможно создать отдельную функцию для каждого типа данных потенциального целевого массива.