From: | Ian Lance Taylor <ian(at)airs(dot)com> |
---|---|
To: | Aristide Aragon <zuri(at)busa(dot)lionking(dot)org> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: Building SPI programs |
Date: | 2001-02-23 03:49:56 |
Message-ID: | siwvai2h3v.fsf@daffy.airs.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Aristide Aragon <zuri(at)busa(dot)lionking(dot)org> 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
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2001-02-23 03:50:48 | Re: problem while compiling user c functions in 7.1beta4 |
Previous Message | Tom Lane | 2001-02-23 03:23:47 | Re: Problems when dumping a database |