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.