Trigger programming..
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
"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