Обсуждение: pgsql function using C++?, or at least C interfacing with C++ lib?

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

pgsql function using C++?, or at least C interfacing with C++ lib?

От
Eric Parusel
Дата:
Hello,

    I've got a C++ library I need to use, and I want to use it from a pgsql
function.
Would anyone happen to have any examples of how to accomplish something
like this?
I see examples of C-based functions for pgsql (like dbsize, etc, in
contrib).

Which way should I go about this?

1) C based function, calling a C++ library (is this possible?)
2) C++ based function, calling a C++ library (I read in the pgsql docs
that compiling C++ code for use with pgsql is either partially
incompatible, or just a bad idea?)

Also note that I would like to pass the function the following arguments:
int4, _varchar (array of varchars)

Any help would be appreciated, I'm not incredibly experienced in these
matters.

Thanks,
Eric

Re: pgsql function using C++?, or at least C interfacing with C++ lib?

От
"Dann Corbit"
Дата:
> -----Original Message-----
> From: pgsql-general-owner@postgresql.org
> [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Eric Parusel
> Sent: Saturday, October 16, 2004 4:12 PM
> To: pgsql-general@postgresql.org
> Subject: [GENERAL] pgsql function using C++?, or at least C
> interfacing with C++ lib?
>
>
> Hello,
>
>     I've got a C++ library I need to use, and I want to use
> it from a pgsql
> function.
> Would anyone happen to have any examples of how to accomplish
> something
> like this?
> I see examples of C-based functions for pgsql (like dbsize, etc, in
> contrib).
>
> Which way should I go about this?
>
> 1) C based function, calling a C++ library (is this possible?)

If you want to do this, publish an interface in your C++ library with
the interface functions declared as extern "C"

> 2) C++ based function, calling a C++ library (I read in the
> pgsql docs
> that compiling C++ code for use with pgsql is either partially
> incompatible, or just a bad idea?)

C++ calling C++ is not portable because of name mangling.  Other than
that, if you use the same compiler there is rarely any problem.

> Also note that I would like to pass the function the
> following arguments: int4, _varchar (array of varchars)
>
> Any help would be appreciated, I'm not incredibly experienced
> in these
> matters.

I would use an extern "C" interface, if I were in your shoes.

Re: pgsql function using C++?, or at least C interfacing with C++ lib?

От
Tom Lane
Дата:
"Dann Corbit" <DCorbit@connx.com> writes:
>> I've got a C++ library I need to use, and I want to use
>> it from a pgsql function.

> If you want to do this, publish an interface in your C++ library with
> the interface functions declared as extern "C"

Note that the backend does not incorporate any C++ library support,
which is rather a severe handicap.  For instance it will probably
not work to use catch/throw constructs.

            regards, tom lane