我刚刚开始使用 Postgres 外部 C 函数进行测试。当我传入一个数字并返回它时,该函数工作正常。(例子)
示例函数
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)) 但结果相同。