我想将自定义类型值发送到C语言函数,但我无法获得该值?

时间:2016-03-04 18:34:45

标签: postgresql hawq

任何人都可以帮助提供一个使用自定义类型作为参数之一的C语言函数示例吗?

今天,我尝试按照文档进行操作,但是我无法获得自定义类型的正确值。

这是一个例子: http://www.postgresql.org/docs/9.3/static/xfunc-c.html#XFUNC-C-BASETYPE

#include "postgres.h"
#include "executor/executor.h"  /* for GetAttributeByName() */

#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif

PG_FUNCTION_INFO_V1(c_overpaid);

Datum
c_overpaid(PG_FUNCTION_ARGS)
{
    HeapTupleHeader  t = PG_GETARG_HEAPTUPLEHEADER(0);
    bool isnull;
    Datum salary;

    salary = GetAttributeByName(t, "salary", &isnull);
    if (isnull)
        PG_RETURN_BOOL(false);

    PG_RETURN_FLOAT4(DatumGetFLOAT4(salary) );
}

答案总是" 0"。

你可以使用" CREATE TYPE V AS(工资浮动);"作为自定义类型。 THX。

1 个答案:

答案 0 :(得分:0)

上述问题已经解决。

这是字节数的问题。

我介绍了double类型,但使用FLOAT4来获取值。 我应该使用FLOAT8来获得正确的值。

2016年3月5日