hello you have to look to postgresql/src/backend/utils/adt/numeric.c functions -
then you can call float8_numeric Numeric result = DatumGetNumeric(DirectFunctionCall1(float8_numeric, Float8GetDatum(dx)); regards Pavel 2014-02-24 7:45 GMT+01:00 Felix.徐 <[email protected]>: > Hi all, > I'm talking about the source code of pgsql and I want to know how the > typing system works in pgsql. > A few functions can help us do the type conversion, for example: > > Int32GetDatum -- convert a integer to a datum > Float8GetDatum -- convert double to a datum > cstring_to_text -- convert a string to a text > ... > > but there are a lot of types in pgsql,how to choose the corresponding > function? or is there a more automatic way to do the type conversion(raw > chars to a datum, suppose I have the corresponding Form_pg_type instance)? > > I ask this question because I don't know how to convert a double value to > a numeric datum(the field's type is numeric(10,2)), pg_type shows that > numeric's typlen is -1 whose length is variable thus Float8GetDatum is not > working.. > > > > >
