for 9)))
[2022-08-14 04:11:23] [42P17] ERROR: functions in index expression must be marked IMMUTABLE
some_db.public> CREATE INDEX "idx_replenishments_short_id" ON "replenishments" (('AMX-REPL-' || substring("id"::varchar from 0 for 9)))
[2022-08-14 04:14:34] completed in 58 ms
никто не знает, почему конкатенация в индексе через CONCAT не канает, а через || работает?
Доброй concat функция не является immutable, так как может зависеть от настроек параметров базы данных, так как может преобразовывать данные простой пример, timestamptz_out зависит от настройки timezone, так же есть настройка extra_digits_out вроде как и тд в отличии от оператора ||, которому нужно явно привести тип, он не занимается преобразовыванием данных и да, в запросах нужно указывать то, что указано в индексе
Обсуждают сегодня