Trigger programming..

Started by Mitch Vincentalmost 26 years ago2 messagesgeneral
Jump to latest
#1Mitch Vincent
mitch@venux.net

I have a function written in C, a trigger calls this function on the table
applicants. I need to get the value from a field named "app_id" in the table
that the trigger is pulled on (applicants)..

I have this code...

app_id_fieldname is a character pointer with value "app_id". char_app_id is
always NULL though.. I'm totally guessing at most of this from looking
through some examples and the SPI section of the programmer's manual.

Someone school me -- please! :-)

tupdesc = rel->rd_att; /* what the tuple looks like (?) */

app_id_colnum = SPI_fnumber(tupdesc, app_id_fieldname);

if (app_id_colnum == SPI_ERROR_NOATTRIBUTE)
elog(ERROR, "app_id_colnum - SPI_ERROR_NOATTRIBUTE error ");

char_app_id = SPI_getvalue(rettuple, tupdesc, app_id_colnum);

Thanks!!

-Mitch

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Mitch Vincent (#1)
Re: Trigger programming..

"Mitch Vincent" <mitch@venux.net> writes:

I have this code...

tupdesc = rel->rd_att; /* what the tuple looks like (?) */

app_id_colnum = SPI_fnumber(tupdesc, app_id_fieldname);

if (app_id_colnum == SPI_ERROR_NOATTRIBUTE)
elog(ERROR, "app_id_colnum - SPI_ERROR_NOATTRIBUTE error ");

char_app_id = SPI_getvalue(rettuple, tupdesc, app_id_colnum);

Looks OK to me, as far as it goes. I'd wonder whether the tuple
actually matches the tupdesc you're using.

Looking at SPI_getvalue itself (in src/backend/executor/spi.c),
I can see that SPI_result might offer a clue about why it's failing.

regards, tom lane