PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como acessar uma coluna HSTORE usando a biblioteca C do PostgreSQL (libpq)?


libpqtypes parece ter algum suporte para hstore .

Outra opção é evitar interagir diretamente com hstore em seu código. Você ainda pode se beneficiar dele no banco de dados sem lidar com sua representação de texto no lado do cliente. Digamos que você queira buscar um campo hstore; você só usa:
SELECT t.id, k, v FROM thetable t, LATERAL each(t.hstorefield);

ou em versões antigas do PostgreSQL, você pode usar o formulário peculiar e fora do padrão set-returning-function-in-SELECT:
SELECT t.id, each(t.hstorefield) FROM thetable t;

(mas cuidado se selecionar vários registros de t desta forma, você obterá resultados estranhos quando LATERAL vai ficar bem).

Outra opção é usar hstore_to_array ou hstore_to_matrix ao consultar, se você estiver confortável em lidar com a representação de array do PostgreSQL.

Para criar valores hstore, você pode usar os construtores hstore que recebem arrays. Esses arrays podem ser criados com array_agg sobre um VALUES cláusula se você não quiser lidar com a representação de array do PostgreSQL em seu código.

Toda essa confusão deve desaparecer no futuro, pois o PostgreSQL 9.4 provavelmente terá uma interoperação muito melhor entre os tipos hstore e json, permitindo que você use apenas a representação json ao interagir com o hstore.