libpqtypes
parece tener cierto soporte para hstore
.
Otra opción es evitar interactuar directamente con hstore
en tu código. Todavía puede beneficiarse de él en la base de datos sin tener que lidiar con su representación de texto en el lado del cliente. Digamos que desea buscar un campo hstore; solo usas:
SELECT t.id, k, v FROM thetable t, LATERAL each(t.hstorefield);
o en versiones antiguas de PostgreSQL, puede usar la forma peculiar y no estándar de función de devolución de conjunto en SELECCIONAR:
SELECT t.id, each(t.hstorefield) FROM thetable t;
(pero tenga cuidado si selecciona varios registros de t
de esta manera, obtendrá resultados extraños mientras que LATERAL
estará bien).
Otra opción es usar hstore_to_array
o hstore_to_matrix
al realizar consultas, si se siente cómodo con la representación de matrices de PostgreSQL.
Para crear valores de hstore, puede usar los constructores de hstore que toman matrices. Esas matrices a su vez se pueden crear con array_agg
sobre un VALUES
cláusula si no desea tratar con la representación de matriz de PostgreSQL en su código.
Todo este lío debería desaparecer en el futuro, ya que es probable que PostgreSQL 9.4 tenga una interoperabilidad mucho mejor entre los tipos hstore y json, lo que le permitirá usar la representación json cuando interactúe con hstore.