Postgres External C Functions でテストを始めたところです。数値を渡して返すと、関数は正常に機能します。(例)
サンプル機能
PG_FUNCTION_INFO_V1(numericTesting);
Datum
numericTesting(PG_FUNCTION_ARGS)
{
Numeric p = PG_GETARG_NUMERIC(0);
PG_RETURN_NUMERIC(p);
}
ただし、渡された変数に対して数学関数を実行しようとすると、コンパイルされません。私は得る
エラー: バイナリへのオペランドが無効です *
サンプル機能
PG_FUNCTION_INFO_V1(numericTesting);
Datum
numericTesting(PG_FUNCTION_ARGS)
{
Numeric p = PG_GETARG_NUMERIC(0);
PG_RETURN_NUMERIC(p * .5);
}
これは何が原因ですか?数値データ型には、数学を可能にする関数が必要だと思います。使用してみました: PG_RETURN_NUMERIC(DatumGetNumeric(p * .5)) が、同じ結果が得られました。