Создание индекса ОШИБКА: функции в выражении индекса должны быть помечены как IMMUTABLE - PullRequest
0 голосов
/ 06 июня 2018

Пытаясь реализовать предложения, сделанные к этому другому вопросу:

вопрос, связанный

Я написал эту миграцию, чтобы удалить текущий индекс и создать новый:

class ChangeIndexes < ActiveRecord::Migration[5.1]
  def change
    remove_index :part_masters, name: "part_masters_on_combo_idx" 

    execute <<-SQL
      CREATE INDEX ON part_masters (lower(unaccent(combo)) text_pattern_ops);
      CREATE INDEX ON locations (lower(unaccent(ubicacion)) text_pattern_ops);     
    SQL
   end
end

Проблема в том, что я получаю эту ошибку, я думаю, потому что я использую функции, такие как нижняя или неактивная, для создания индекса:

PG::InvalidObjectDefinition: ERROR: functions in index expression must be marked IMMUTABLE

1 Ответ

0 голосов
/ 06 июня 2018

Если кто-то сочтет это полезным в будущем, пользователь @ laurenz-albe предоставил решение этого вопроса в указанном вопросе, просто нужно было создать функцию unaccent в качестве пользовательской функции pg:

CREATE FUNCTION my_unaccent(text) RETURNS text LANGUAGE SQL IMMUTABLE AS 
'SELECT unaccent($1)';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...