Aristide Aragon <[EMAIL PROTECTED]> writes:
> I have to do some programming in C or C++ and PostgreSQL.
> Having not ever done this before, I opened the documentation (in my machine,
>/usr/local/pgsql/doc) and read about the options I had. SPI, libpq, libpq++ and ecpg.
>I don't want, if possible, an embeded language, or anything that requires a
>preprocessor. So, I thought to start by trying the first, SPI, which also seemed to
>be simple.
SPI is only for stored procedures which are dynamically linked into
the Postgres backend.
Ordinary code doesn't do that. It uses some one of the other
mechanisms.
Ian
> /tmp/ccPIp24d.o(.text+0x7): undefined reference to `SPI_connect'
> /tmp/ccPIp24d.o(.text+0x2b): undefined reference to `SPI_exec'
> /tmp/ccPIp24d.o(.text+0x33): undefined reference to `SPI_finish'
When your program is dynamically linked in, those functions will be
satisfied by definitions in the Postgres backend.
> So I supposed I needed to link against some library. With grep I searched
>/usr/local/pgsql/lib for SPI_, and I found no .a's matching.
> I found that /usr/local/pgsql/lib/plpgsql.so and /usr/local/pgsql/lib/pltcl.so had
>"SPI_", however none worked.
Those are examples of backend procedures which are dynamically linked
in, in those cases to define a language.
Ian