postgresql 9.2 を使用して plpython 関数を作成しています。hstore 文字列を返すクエリがコードで既に実行されているとします。次に、クエリを発行したいと思います。
SELECT hstore_to_matrix('hstorestring')
hstore 文字列を含む文字列であるとしましょう。A=>B
create or replace function testfreq()
returns text
as $$
hstorestring = '"GT"=>"thing","HS"=>"[-0.1,-0.2]"'
rv2 = plpy.execute("SELECT hstore_to_matrix(%s)" % (plpy.quote_literal(hstorestring)))
plpy.log("Hstore:",rv2[0])
return("done")
$$ LANGUAGE plpythonu;
として実行
select testfreq();
戻り値
testdb=# select testfreq();
ERROR: plpy.Error: unrecognized error in PLy_spi_execute_fetch_result
CONTEXT: Traceback (most recent call last):
PL/Python function "testfreq", line 3, in <module>
rv2 = plpy.execute("SELECT hstore_to_matrix(%s)" % (plpy.quote_literal(hstorestring)))
PL/Python function "testfreq":
上記のコードで hstore_to_array に置き換えると、出力は次のようになります。
testdb=# select testfreq();
LOG: ('Hstore:', {'hstore_to_array': ['GT', 'thing', 'HS', '[-0.1,-0.2]']})
CONTEXT: PL/Python function "testfreq"
testfreq
----------
done
(1 row)
また、関数の代わりに hstore 演算子を使用しようとしました。これらの関数を pgsql ターミナルで試して、Python に埋め込まれていないときに機能することを確認しました。任意のポインタをいただければ幸いです。