Re: Rounding/create C function question
От | wieck@debis.com (Jan Wieck) |
---|---|
Тема | Re: Rounding/create C function question |
Дата | |
Msg-id | m12kVa8-0003knC@orion.SAPserv.Hamburg.dsh.de обсуждение исходный текст |
Ответ на | Rounding/create C function question (Robert <robert@robert.cz>) |
Список | pgsql-general |
[Charset iso-8859-2 unsupported, filtering to ASCII...] > Hi, > > I need some custom rounding function (say 1 or two decimal points), > what would be the simplest way to make one? > > - Robert > > > > P.S. I tried to create one in C like > > #include <string.h> > #include "postgres.h" > > double tst5(double x) { > return x; // ... whatever needed > } > > and compiled it with (on RadHat 6.1, PG 6.5.3) > > gcc -I/usr/include/pgsql -fPIC -shared > -o libeucto.so.0.0.2 -Wl,-soname,libeucto.so.0.0.2 eucto_round.c > > CREATE FUNCTION tst5(float8) RETURNS float8 > AS '/mnt/lotrando_c/projekty/eucto/bin/libeucto.so.0.0.2' LANGUAGE > 'c'; > > This works as long as the function is int4/int4, but for float8 'backend > terminated abnormally'. Thanks for any help. float8 is passed by reference (pointer), not by value. Look into the existing functions mucking with float8 ... Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #========================================= wieck@debis.com (Jan Wieck) #
В списке pgsql-general по дате отправления: