Использование этого Cte:
WITH RECURSIVE "_.catalogIds" AS (
SELECT "catalog"."name", "catalog"."parent_id", "catalog"."owner_id", "catalog"."image_id", "catalog"."id", "catalog"."created", "catalog"."updated", "catalog"."icon_class"
FROM "catalog"
WHERE "catalog"."id" = 1
UNION
SELECT "catalog"."name", "catalog"."parent_id", "catalog"."owner_id", "catalog"."image_id", "catalog"."id", "catalog"."created", "catalog"."updated", "catalog"."icon_class"
FROM "_.catalogIds"
INNER JOIN "catalog" ON "catalog"."id" = "_.catalogIds".parent_id
)
В этой таблице:
CREATE TABLE catalog (
id BIGSERIAL,
created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
name JSON NOT NULL,
parent_id BIGINT,
owner_id BIGINT NOT NULL,
image_id BIGINT,
icon_class VARCHAR(255) DEFAULT 'fa fa-book',
PRIMARY KEY (id),
FOREIGN KEY (parent_id) REFERENCES catalog (id) ON DELETE CASCADE,
FOREIGN KEY (owner_id) REFERENCES "user" (id) ON DELETE CASCADE,
FOREIGN KEY (image_id) REFERENCES media_file (id) ON DELETE SET NULL
);
В результате ошибки postgres говорится, что он не может найти оператор равенства для типа json.Еще более странно, он говорит, что ошибка в позиции 42, которая находится в части выбора оператора.Также, если я сокращаю запрос, ошибка перемещается назад, поскольку она остается в определенном месте запроса.Я написал много рекурсивных запросов, но этот кажется очень странным.Это похоже на ошибку postgres для меня, но мне нужно подтверждение и пример обхода / работы.