Всем привет. Есть таблица фильтров по книгам.
create table filter
(
"id" serial PRIMARY KEY,
"user_id" serial REFERENCES public.user (id) ON DELETE CASCADE,
"keywords" text []
);
При добавлении новой книги в базу, идет поиск по уже существующим фильтрам и ключевым словам в них, чтобы уведомлять пользователя о новом поступлении.
Добавление книги. Используется
pg-promiseself.create = function (obj) {
return db.query(`INSERT INTO public.filter (user_id, keywords)
VALUES ($(userId), $(keywords)) RETURNING id;`, obj);
};
Поиск по ключевым словам выглядит примерно так. На вход у нас попадает строка(кусок текста)
SELECT * FROM public.filter WHERE
LOWER('Some long string from a book') ~ ANY(public.filter.keywords);
И если в фильтре в ключевых словах содержится какой-то специальный символ, например (c++), то вылетает ошибка
ERROR: ОШИБКА: неверное регулярное выражение: quantifier operand invalid
SQL state: 2201B
Из-за чего так?