Почему каждый хочет выстрелить себе в ногу с массивами, магазинами и т. Д.? Нормализуйте ваши данные в стандартные таблицы SQL. И используйте расширенные функции, такие как массивы, hstores, когда вы программируете. Но вот пуля ...
Postgres не понравится использование зарезервированного слова в качестве типа.
CREATE TYPE rec AS (name text, description text, tags text[]);
CREATE TABLE items (id int, wreck rec);
INSERT INTO items(1, row('foo','foo description', '{test,testing,tested}')::rec);
SELECT *
FROM items
WHERE 'test' = ANY ((wreck).tags)
И поиск текста в массиве, в композите в другом массиве ... это просто поражает воображение. И даже если бы вы поняли это, любой, кто придет после того, как вы попытаетесь сохранить свой код, остался бы чесать голову.