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

Started by Eric Paruselover 21 years ago3 messagesgeneral
Jump to latest
#1Eric Parusel
lists@globalrelay.net

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

#2Dann Corbit
DCorbit@connx.com
In reply to: Eric Parusel (#1)
Re: pgsql function using C++?, or at least C interfacing with C++ lib?

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

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dann Corbit (#2)
Re: pgsql function using C++?, or at least C interfacing with C++ lib?

"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