libpqtypes
zdá se, že má nějakou podporu pro hstore
.
Další možností je vyhnout se přímé interakci s hstore
ve vašem kódu. Stále z něj můžete těžit v databázi, aniž byste museli řešit jeho textovou reprezentaci na straně klienta. Řekněme, že chcete načíst pole hstore; stačí použít:
SELECT t.id, k, v FROM thetable t, LATERAL each(t.hstorefield);
nebo na starých verzích PostgreSQL můžete použít svérázný a nestandardní formulář funkce vracení set-returning-function-in-SELECT:
SELECT t.id, each(t.hstorefield) FROM thetable t;
(ale pozor, pokud vybíráte více záznamů z t
tímto způsobem získáte podivné výsledky, zatímco LATERAL
bude v pořádku).
Další možností je použít hstore_to_array
nebo hstore_to_matrix
při dotazování, pokud vám vyhovuje reprezentace pole PostgreSQL.
Chcete-li vytvořit hodnoty hstore, můžete použít konstruktory hstore, které přebírají pole. Tato pole lze zase vytvořit pomocí array_agg
přes VALUES
klauzule, pokud se nechcete zabývat reprezentací pole PostgreSQL ve vašem kódu.
Všechny tyto nepořádky by měly v budoucnu zmizet, protože PostgreSQL 9.4 pravděpodobně bude mít mnohem lepší spolupráci mezi typy hstore a json, což vám umožní při interakci s hstore použít pouze reprezentaci json.