2016-03-04 7 views
0

Любой может помочь привести пример функции языка C, который использует настраиваемый тип в качестве одного из параметров?Я хочу отправить значение настраиваемого типа в 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 (float float)»; как пользовательский тип. thx.

ответ

0

Вышеупомянутая проблема решена.

Проблема с количеством байтов.

Я представил двойной тип, но использую FLOAT4 для получения значения. Я должен использовать FLOAT8, чтобы получить правильное значение.

2016-03-05

 Смежные вопросы

  • Нет связанных вопросов^_^