Я сталкиваюсь с этой ошибкой при попытке создать индекс btree для столбца с типом данных XML, который использует выражение xpath в AuroraDB - PostgreSQL 9.6:
ERROR: could not identify a comparison function for type xml
SQL state: 42883
Этот поток 2009 без четкого разрешения - единственный, который я нашел, обсуждая это сообщение об ошибке в отношении создания индекса на основе xpath для намного более ранней версии PostgreSQL:
https://www.postgresql -archive.org / Замедленное выберите раза-на-выбор-с-XPATH-td2074839.html
В моем случае мне также нужно указать пространства имен, и оригинальный постер в этом потоке приведёт результат выражения xpath к тексту [], что для меня тоже становится ошибкой - но зачем это вообще нужно? Я также не вижу, чтобы PostgreSQL использовал мой индекс, даже когда мне нужно пройти через тысячи строк.
Итак, я опробовал более простой случай, и ошибка по-прежнему возникает - пожалуйста, проясните, почему, если вы могли бы:
CREATE TABLE test
(
id integer NOT NULL,
xml_data xml NOT NULL,
CONSTRAINT test_pkey PRIMARY KEY (id)
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;
CREATE INDEX test_idx
ON test USING btree
(xpath('/book/title', xml_data))
и полученное сообщение:
ERROR: could not identify a comparison function for type xml
SQL state: 42883
Кодировка базы данных - UTF8.
Тип сортировки и символов en_US.UTF-8.
Некоторые примеры операторов вставки тоже:
insert into source_data.test(id, xml_data)
values(1, XMLPARSE (DOCUMENT '<?xml version="1.0"?><book><title>Manual</title><chapter>1</chapter><chapter>2</chapter></book>'))
insert into source_data.test(id, xml_data)
values(2, XMLPARSE (DOCUMENT '<?xml version="1.0"?><book><title>Apropos</title><chapter>1</chapter><chapter>2</chapter></book>'))