On 25 June 2013 08:51, Pavel Stehule <pavel.steh...@gmail.com> wrote:
> Hello > > 2013/6/25 Szymon Guz <mabew...@gmail.com>: > > Hi, > > I've got a couple of questions. > > > > I was using numeric_out like this: > > > > DatumGetCString(DirectFunctionCall1(numeric_out, d)); > > > > Why do I have to use DirectFunctionCall1 instead of calling numeric_out? > > numeric_out functions doesn't use C calling convention - it use own > convention for support NULL values and some other informations. > DirectFunctionCall1 is simple function that transform C like call to > PostgreSQL call. You can do it directly, but you have to prepare > necessary structures. > > > > > > > I was suggested to use numeric_send instead of numeric_out, however when > > changing the function names in the above example, the whole expression > > returns 8. Always 8. I check with: > > > > char *x = DatumGetCString(DirectFunctionCall1(numeric_send, d)); > > PLy_elog(NOTICE, x). > > > > "send" functions are used for binary protocol - so it is nonsense. > > > Hi, thanks for the information. So I will leave speeding it up for this moment. thanks, Szymon