You could send the column name directly into your c function. For example:
c_function_name(NEW.col1, NEW.col2, NEW.col3). Otherwise I am not sure how
to send NEW into a C function. You could try declaring NEW in your C
function as a tuple.
-----Original Message-----
From: Joe Conway [SMTP:jconway2@home.com]
Sent: Sunday, February 04, 2001 1:04 AM
To: pgsql-sql@postgresql.org
Subject: Fw: C function for use from PLpgSQL trigger
Hello all,
I posted this (see below) Friday to the interfaces list with no response.
Does anyone know if what I'm trying to do is possible, or should I just
write the entire thing in a C function trigger? The latter would be
unfortunate because I think it would be nice to be able to extend PLpgSQL
using C functions like this.
Anyway, any help or advice will be much appreciated!
Thanks,
Joe
> Hi,
>
> I'm trying to create a C function that I can call from within a PLpgSQL
> trigger function which will return a list of all the values in the NEW
> record formatted suitably for an insert statement. I can't come up with a
> way to do this directly from within PLpgSQL (i.e. iterate through an
> arbitrary number of NEW.attribute).
>
> Can anyone tell me how I can either pass the NEW record to the C function
> (this produces an error message 'NEW used in a non-rule query') or gain
> access to the trigger tuple from within my C function? It seems that
> although PLpgSQL is called as a trigger, the C function is called as a
> regular function (makes sense) and thus has no access to the trigger
tuple
> (my problem).
>
> Any help or guidance is greatly appreciated!
>
> Thanks,
>
> Joe Conway
>