Обсуждение: Executing SQL expression from C-functions

Поиск
Список
Период
Сортировка

Executing SQL expression from C-functions

От
Jorge Arévalo
Дата:
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

Re: Executing SQL expression from C-functions

От
Pavel Stehule
Дата:
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>:
> 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
>

Re: Executing SQL expression from C-functions

От
Jorge Arévalo
Дата:
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

> 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
>>
>