libpqtypes
hstore
をある程度サポートしているようです 。
もう1つのオプションは、hstore
と直接対話しないようにすることです。 あなたのコードで。クライアント側でテキスト表現を処理しなくても、データベースでそれを利用できます。 hstoreフィールドをフェッチするとします。使用するだけです:
SELECT t.id, k, v FROM thetable t, LATERAL each(t.hstorefield);
または、古いPostgreSQLバージョンでは、風変わりで非標準のset-returning-function-in-SELECT形式を使用できます。
SELECT t.id, each(t.hstorefield) FROM thetable t;
(ただし、t
から複数のレコードを選択する場合は注意してください このようにすると、LATERAL
で奇妙な結果が得られます。 大丈夫です。
別のオプションは、hstore_to_array
を使用することです またはhstore_to_matrix
クエリを実行するとき、PostgreSQLの配列表現を扱うことに慣れているかどうか。
hstore値を作成するには、配列を受け取るhstoreコンストラクターを使用できます。これらの配列は、array_agg
を使用して作成できます。 VALUES
を介して コード内でPostgreSQLの配列表現を処理したくない場合は句。
PostgreSQL 9.4はhstoreタイプとjsonタイプの間の相互作用がはるかに優れている可能性があり、hstoreと対話するときにjson表現を使用できるようになるため、この混乱はすべて解消されるはずです。