Thread: calling a C function from pgsql function
Hi All
--
I have created a function in C language . This is to be called from a pgsql function .
Let say the C language function name is "test1" and pgsql function name is "test" .
test1 is called from test three times with different arguments . For example :
test ()
begin
test1(arg1); --test1 is a C library function returning an int
test1(arg2);
test1(arg3);
end;
Now, my questions are :
1. what are the ways to get the value returned by this library function .
2. when test1 is called, will it wait for "test1" to return before continuing with the next statement in "test" or it will continue with the next statement parallely while "test1" is being executed.
3. Moreover, will test1 be called sequentially in order for all the three arguments i.e arg1 first and arg3 in last. Or there can be a different order.
Thanks..
Tamanna
Tamanna | Associate Consultant
GlobalLogic Inc. | Innovation by Design
ARGENTINA | CHILE | CHINA | INDIA | ISRAEL | UKRAINE | UK | USA
Office: 0120-4062000 x 2971
On 08/29/2012 09:18 PM, tamanna madaan wrote: > 1. what are the ways to get the value returned by this library function . You need to wrap the C library function with a PostgreSQL C extension that uses the fmgr.h APIs, so it's callable from SQL and can return a result to SQL. See: http://www.postgresql.org/docs/current/static/xfunc-c.html > 2. when test1 is called, will it wait for "test1" to return before > continuing with the next statement in "test" or it will continue with > the next statement parallely while "test1" is being executed. The call will return when the C wrapper function returns, so they'll be executed in series not in parallel. > 3. Moreover, will test1 be called sequentially in order for all the > three arguments i.e arg1 first and arg3 in last. Or there can be a > different order. The calls will be executed in the order they appear in the PL/PgSQL function. -- Craig Ringer
Hello see http://www.postgresql.org/docs/9.1/static/xfunc-c.html plpgsql can call any sql function, so you have to register your C function as custom postgresql sql function Regards Pavel Stehule 2012/8/29 tamanna madaan <tamanna.madaan@globallogic.com>: > Hi All > > I have created a function in C language . This is to be called from a pgsql > function . > Let say the C language function name is "test1" and pgsql function name is > "test" . > > test1 is called from test three times with different arguments . For > example : > > test () > begin > > test1(arg1); --test1 is a C library function returning an int > test1(arg2); > test1(arg3); > > end; > > Now, my questions are : > > 1. what are the ways to get the value returned by this library function . > 2. when test1 is called, will it wait for "test1" to return before > continuing with the next statement in "test" or it will continue with the > next statement parallely while "test1" is being executed. > 3. Moreover, will test1 be called sequentially in order for all the three > arguments i.e arg1 first and arg3 in last. Or there can be a different > order. > > Thanks.. > Tamanna > > > > > > > > > -- > > Tamanna | Associate Consultant > GlobalLogic Inc. | Innovation by Design > ARGENTINA | CHILE | CHINA | INDIA | ISRAEL | UKRAINE | UK | USA > Office: 0120-4062000 x 2971 > www.globallogic.com > > http://www.globallogic.com/email_disclaimer.txt >