Я хочу использовать массив Postgres для хранения событий для каждого отправителя.Каждое событие сохраняется как пользовательский тип (объект) Postgres.
Как я могу запрашивать записи по свойствам пользовательского типа?Это возможно или нет?
Если да, могу ли я разместить индекс любого типа в столбце массива для ускорения запросов?
Создать пользовательский тип:
CREATE TYPE sender_event AS (
event_timestamp TIMESTAMP(3),
message TEXT
);
Создатьтаблица с массивом пользовательских типов:
CREATE TABLE sender_history (
sender varchar(30),
events sender_event[]
);
Вставить несколько записей в таблицу:
INSERT INTO sender_history VALUES
('sender1', ARRAY[(now(), 'Message text 1')::sender_event]),
('sender2', ARRAY[(now(), 'Message text 2')::sender_event])
Как найти все записи, в массиве которых содержится объект со свойством messageравно «Текст сообщения 2»?
Например, что-то вроде этого (это не работает):
SELECT * FROM sender_history
WHERE events.message = 'Message text 2'
Ожидаемый результат - вторая запись в этой таблице.