Я пытаюсь создать следующий индекс - PullRequest
1 голос
/ 20 января 2020
CREATE INDEX request_response_partition_idx
  ON public.request_response_partition USING btree (userid,extract('Month' from time_stamp));

Я получаю ошибку;

ERROR:  functions in index expression must be marked IMMUTABLE

********** Error **********
ERROR: functions in index expression must be marked IMMUTABLE
SQL state: 42P17

1 Ответ

2 голосов
/ 20 января 2020

time_stamp должно быть timestamp with time zone.

Вы должны будете сделать выражение IMMUTABLE, преобразовав его в timestamp without time zone в соответствующем часовом поясе:

CREATE INDEX request_response_partition_idx
ON public.request_response_partition (
   userid,
   extract('Month' FROM (time_stamp AT TIME ZONE 'UTC'))
);

Конечно, вы также должны изменить выражение в ваших запросах, чтобы оно соответствовало индексу.

...