Thread: 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