libpqtypes
изглежда има известна поддръжка за hstore
.
Друг вариант е да избягвате директното взаимодействие с hstore
във вашия код. Все още можете да се възползвате от него в базата данни, без да се занимавате с текстовото му представяне от страна на клиента. Кажете, че искате да извлечете поле hstore; просто използвате:
SELECT t.id, k, v FROM thetable t, LATERAL each(t.hstorefield);
или в старите версии на PostgreSQL можете да използвате странната и нестандартна форма за връщане на функция в SELECT:
SELECT t.id, each(t.hstorefield) FROM thetable t;
(но внимавайте, ако изберете няколко записа от t
по този начин ще получите странни резултати, докато LATERAL
ще се оправи).
Друг вариант е да използвате hstore_to_array
или hstore_to_matrix
когато правите заявки, ако ви е удобно да работите с представянето на масиви на PostgreSQL.
За да създадете hstore стойности, можете да използвате hstore конструкторите, които приемат масиви. Тези масиви от своя страна могат да бъдат създадени с array_agg
над VALUES
клауза, ако не искате да се занимавате с представянето на масива на PostgreSQL във вашия код.
Цялата тази бъркотия трябва да изчезне в бъдеще, тъй като PostgreSQL 9.4 вероятно ще има много по-добро взаимодействие между типовете hstore и json, което ще ви позволи просто да използвате json представянето, когато взаимодействате с hstore.