libpqtypes
lijkt enige ondersteuning te hebben voor hstore .
Een andere optie is om directe interactie met hstore te vermijden in uw code. U kunt er nog steeds van profiteren in de database zonder de tekstrepresentatie aan de clientzijde aan te pakken. Stel dat u een hstore-veld wilt ophalen; je gebruikt gewoon:
SELECT t.id, k, v FROM thetable t, LATERAL each(t.hstorefield);
of op oude PostgreSQL-versies kunt u het eigenzinnige en niet-standaard set-returning-function-in-SELECT-formulier gebruiken:
SELECT t.id, each(t.hstorefield) FROM thetable t;
(maar pas op als u meerdere records selecteert uit t op deze manier krijg je rare resultaten terwijl LATERAL komt goed).
Een andere optie is om hstore_to_array . te gebruiken of hstore_to_matrix bij het opvragen, als u vertrouwd bent met het omgaan met PostgreSQL-arrayweergave.
Om hstore-waarden te maken, kunt u de hstore-constructors gebruiken die arrays gebruiken. Die arrays kunnen op hun beurt worden gemaakt met array_agg over een VALUES clausule als u niet wilt omgaan met de array-representatie van PostgreSQL in uw code.
Al deze rotzooi zou in de toekomst moeten verdwijnen, aangezien PostgreSQL 9.4 waarschijnlijk een veel betere samenwerking zal hebben tussen hstore- en json-typen, waardoor u alleen de json-representatie kunt gebruiken bij interactie met hstore.