Как использовать uuid с postgresql gist в ограничении EXCLUDE - PullRequest
0 голосов
/ 09 мая 2018

Я получаю сообщение об ошибке при использовании ограничения Exclude с использованием gist

ALTER TABLE tbl_product ADD EXCLUDE USING gist (base_id WITH =, lifetime WITH &&);

ERROR:  data type uuid has no default operator class for access method "gist"
HINT:  You must specify an operator class for the index or define a default operator class for the data type.

Примечание: base_id тип данных uuid, lifetime тип данных - период

Я использую PostgreSQL 9.4. Я должен использовать только 9.4, так как у меня нет других опций, так как я не могу установить расширение temporal в 9.5, 9.6 и 10 выдает ошибку.

1 Ответ

0 голосов
/ 09 мая 2018

Для этого вам понадобится расширение btree_gist:

btree_gist предоставляет классы операторов индекса GiST, которые реализуют эквивалентное поведение B-дерева для типов данных int2, int4, int8, float4, float8, numeric, timestamp with time zone, timestamp without time zone, time with time zone, time without time zone, date, interval, oid, money, char, varchar, text, bytea, bit, varbit, macaddr, macaddr8, inet, cidr, uuid и все enum типов.

К сожалению, поддержка uuid была добавлена ​​только в v10.

С v10 вы сможете использовать

base_id gist_uuid_ops WITH =

в вашем исключении.

С 9.4 вы можете сначала преобразовать столбец в другой тип:

(base_id::text) gist_text_ops WITH =
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...