Executing SQL expression from C-functions

Started by Jorge Arévaloabout 15 years ago3 messagesgeneral
Jump to latest
#1Jorge Arévalo
jorge.arevalo@deimos-space.com

Hello,

I need to write a C-function to extend my PostgreSQL server
functionality. One of the arguments of that function is a string
representing any PostgreSQL valid expression returning a number. For
example:

3+5*cos(7.4)/8
7
2+2
log(34)
degrees(0.5)
power(9.0, 3.0)
case when 8 > 2 then 1 when 7*5 < 43 then 2 else 3 end

and so on

The point is my function first replace some values in the expression
(variable names) for numbers and then it should execute the expression
and returns the result (a number). With PL/pgSQL I can use EXECUTE
expr INTO val, but how could I do it in a C function?

Many thanks in advance, and best regards

--
Jorge Arévalo
Internet & Mobilty Division, DEIMOS
jorge.arevalo@deimos-space.com
http://mobility.grupodeimos.com/
http://gis4free.wordpress.com
http://geohash.org/ezjqgrgzz0g

#2Pavel Stehule
pavel.stehule@gmail.com
In reply to: Jorge Arévalo (#1)
Re: Executing SQL expression from C-functions

Hello

see SPI interface

http://www.postgresql.org/docs/8.4/interactive/spi-examples.html

Regards

Pavel Stehule

2011/1/28 Jorge Arévalo <jorge.arevalo@deimos-space.com>:

Show quoted text

Hello,

I need to write a C-function to extend my PostgreSQL server
functionality. One of the arguments of that function is a string
representing any PostgreSQL valid expression returning a number. For
example:

3+5*cos(7.4)/8
7
2+2
log(34)
degrees(0.5)
power(9.0, 3.0)
case when 8 > 2 then 1 when 7*5 < 43 then 2 else 3 end

and so on

The point is my function first replace some values in the expression
(variable names) for numbers and then it should execute the expression
and returns the result (a number). With PL/pgSQL I can use EXECUTE
expr INTO val, but how could I do it in a C function?

Many thanks in advance, and best regards

--
Jorge Arévalo
Internet & Mobilty Division, DEIMOS
jorge.arevalo@deimos-space.com
http://mobility.grupodeimos.com/
http://gis4free.wordpress.com
http://geohash.org/ezjqgrgzz0g

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#3Jorge Arévalo
jorge.arevalo@deimos-space.com
In reply to: Pavel Stehule (#2)
Re: Executing SQL expression from C-functions

2011/1/28 Pavel Stehule <pavel.stehule@gmail.com>:

Hello

see SPI interface

http://www.postgresql.org/docs/8.4/interactive/spi-examples.html

Regards

Pavel Stehule

Hi Pavel,

Thanks a lot!

Best regards,
--
Jorge Arévalo
Internet & Mobilty Division, DEIMOS
jorge.arevalo@deimos-space.com
http://mobility.grupodeimos.com/
http://gis4free.wordpress.com
http://geohash.org/ezjqgrgzz0g

Show quoted text

2011/1/28 Jorge Arévalo <jorge.arevalo@deimos-space.com>:

Hello,

I need to write a C-function to extend my PostgreSQL server
functionality. One of the arguments of that function is a string
representing any PostgreSQL valid expression returning a number. For
example:

3+5*cos(7.4)/8
7
2+2
log(34)
degrees(0.5)
power(9.0, 3.0)
case when 8 > 2 then 1 when 7*5 < 43 then 2 else 3 end

and so on

The point is my function first replace some values in the expression
(variable names) for numbers and then it should execute the expression
and returns the result (a number). With PL/pgSQL I can use EXECUTE
expr INTO val, but how could I do it in a C function?

Many thanks in advance, and best regards

--
Jorge Arévalo
Internet & Mobilty Division, DEIMOS
jorge.arevalo@deimos-space.com
http://mobility.grupodeimos.com/
http://gis4free.wordpress.com
http://geohash.org/ezjqgrgzz0g

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general