libpqtypes
ser ud til at have en vis understøttelse af hstore
.
En anden mulighed er at undgå direkte interaktion med hstore
i din kode. Du kan stadig drage fordel af det i databasen uden at beskæftige dig med dets tekstrepræsentation på klientsiden. Sig, at du vil hente et hstore-felt; du bruger bare:
SELECT t.id, k, v FROM thetable t, LATERAL each(t.hstorefield);
eller på gamle PostgreSQL-versioner kan du bruge den finurlige og ikke-standardiserede sæt-retur-funktion-i-SELECT-formular:
SELECT t.id, each(t.hstorefield) FROM thetable t;
(men pas på, hvis du vælger flere poster fra t
på denne måde vil du få mærkelige resultater, mens LATERAL
er vil være i orden).
En anden mulighed er at bruge hstore_to_array
eller hstore_to_matrix
når du forespørger, hvis du er tryg ved at håndtere PostgreSQL-arrayrepræsentation.
For at oprette hstore-værdier kan du bruge hstore-konstruktørerne, der tager arrays. Disse arrays kan igen oprettes med array_agg
over en VALUES
klausul, hvis du ikke ønsker at håndtere PostgreSQL's array-repræsentation i din kode.
Alt dette rod burde forsvinde i fremtiden, da PostgreSQL 9.4 sandsynligvis vil have meget bedre interoperation mellem hstore- og json-typerne, så du bare kan bruge json-repræsentationen, når du interagerer med hstore.