Tom Lane wrote:
> Joe Conway <mail@joeconway.com> writes:
>
>>For triggers, I was previously building up the arguments thus:
>> slot = TupleDescGetSlot(tupdesc);
>> slot->val = trigdata->tg_trigtuple;
>> arg[7] = PointerGetDatum(slot);
>
>
>>I suppose now I should do this instead?
>> arg[7] = PointerGetDatum(trigdata->tg_trigtuple->t_data);
>
>
> Hm, no, that won't work because a tuple being passed to a trigger
> probably isn't going to contain valid type information. The API for
> calling triggers is different from calling ordinary functions, so
> I never thought about trying to make it look the same. At what point
> are you trying to do the above, anyway?
That's a shame -- it used to work fine -- done this way so the same
function could handle tuple arguments to regular functions, and old/new
tuples to trigger functions. It is in plr_trigger_handler(); vaguely
similar to pltcl_trigger_handler(). I'll have to figure out a workaround
I guess.
Joe