私はPgAdminIIIに慣れており、PostgreSQLデータベースで次のようなpython関数を簡単に作成できます。
_CREATE OR REPLACE FUNCTION pyHello (x integer)
RETURNS void AS $$
if x == 1:
plpy.notice("Hello World")
$$ LANGUAGE plpythonu VOLATILE;
_
そしてそれは完璧に機能します:
これで、同じデータベースで同じユーザーを使用してまったく同じクエリを実行すると、phpPgAdminでエラーが発生します。
_ERROR: syntax error at or near "CREATE"
LINE 1: SELECT COUNT(*) AS total FROM (CREATE OR REPLACE FUNCTION py...
^
_
これがスクリーンショットです:
今私は疑問に思っています:
SELECT COUNT(*) FROM (...) AS sub
クエリでラップするのはなぜですか?このような:
_SELECT COUNT(*) AS total FROM (CREATE OR REPLACE FUNCTION pyHello (x integer)
RETURNS void AS $$
if x == 1:
plpy.notice("Hello World")
$$ LANGUAGE plpythonu VOLATILE) AS sub
_
これは私を少し困惑させ、インターネット上で情報を見つけることができませんでした。言語サポートがデータベースにインストールされていることを理解している限り、このクエリが一方のインターフェイスで機能し、もう一方のインターフェイスでは機能しないのはなぜですか?
ホストはArchLinuxで、次のパッケージバージョンがインストールされています。
何か案は?
秘訣は、クエリを実行する前に、ページネーションの結果チェックボックスをオフにすることです。これにより、そのSELECT COUNT(*) ...
ラッパーが作成されます。
このチェックボックスを選択しないと、plpythonuクエリの作成は期待どおりに機能します。
Sourceforgeで バグレポート#449 を作成して、これが本当に望ましい動作であるかどうかを確認しました。