Index: src/pl/tcl/pltcl.c =================================================================== RCS file: /opt/src/cvs/pgsql-server/src/pl/tcl/pltcl.c,v retrieving revision 1.74 diff -c -r1.74 pltcl.c *** src/pl/tcl/pltcl.c 4 Aug 2003 00:43:33 -0000 1.74 --- src/pl/tcl/pltcl.c 4 Aug 2003 05:36:12 -0000 *************** *** 708,770 **** else if (TRIGGER_FIRED_AFTER(trigdata->tg_event)) Tcl_DStringAppendElement(&tcl_cmd, "AFTER"); else ! Tcl_DStringAppendElement(&tcl_cmd, "UNKNOWN"); /* The level part of the event for TG_level */ if (TRIGGER_FIRED_FOR_ROW(trigdata->tg_event)) Tcl_DStringAppendElement(&tcl_cmd, "ROW"); else if (TRIGGER_FIRED_FOR_STATEMENT(trigdata->tg_event)) Tcl_DStringAppendElement(&tcl_cmd, "STATEMENT"); - else - Tcl_DStringAppendElement(&tcl_cmd, "UNKNOWN"); ! /* Build the data list for the trigtuple */ ! pltcl_build_tuple_argument(trigdata->tg_trigtuple, ! tupdesc, &tcl_trigtup); ! ! /* ! * Now the command part of the event for TG_op and data for NEW and ! * OLD ! */ ! if (TRIGGER_FIRED_BY_INSERT(trigdata->tg_event)) ! { ! Tcl_DStringAppendElement(&tcl_cmd, "INSERT"); - Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_trigtup)); Tcl_DStringAppendElement(&tcl_cmd, ""); - - rettup = trigdata->tg_trigtuple; - } - else if (TRIGGER_FIRED_BY_DELETE(trigdata->tg_event)) - { - Tcl_DStringAppendElement(&tcl_cmd, "DELETE"); - Tcl_DStringAppendElement(&tcl_cmd, ""); - Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_trigtup)); ! rettup = trigdata->tg_trigtuple; ! } ! else if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event)) ! { ! Tcl_DStringAppendElement(&tcl_cmd, "UPDATE"); ! ! pltcl_build_tuple_argument(trigdata->tg_newtuple, ! tupdesc, &tcl_newtup); ! ! Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_newtup)); ! Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_trigtup)); ! ! rettup = trigdata->tg_newtuple; } else ! { ! Tcl_DStringAppendElement(&tcl_cmd, "UNKNOWN"); ! ! Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_trigtup)); ! Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_trigtup)); ! ! rettup = trigdata->tg_trigtuple; ! } memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart)); Tcl_DStringFree(&tcl_trigtup); --- 708,785 ---- else if (TRIGGER_FIRED_AFTER(trigdata->tg_event)) Tcl_DStringAppendElement(&tcl_cmd, "AFTER"); else ! /* internal error */ ! elog(ERROR, "unrecognized WHEN tg_event"); /* The level part of the event for TG_level */ if (TRIGGER_FIRED_FOR_ROW(trigdata->tg_event)) + { Tcl_DStringAppendElement(&tcl_cmd, "ROW"); + + /* Build the data list for the trigtuple */ + pltcl_build_tuple_argument(trigdata->tg_trigtuple, + tupdesc, &tcl_trigtup); + + /* + * Now the command part of the event for TG_op and data for NEW and + * OLD + */ + if (TRIGGER_FIRED_BY_INSERT(trigdata->tg_event)) + { + Tcl_DStringAppendElement(&tcl_cmd, "INSERT"); + + Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_trigtup)); + Tcl_DStringAppendElement(&tcl_cmd, ""); + + rettup = trigdata->tg_trigtuple; + } + else if (TRIGGER_FIRED_BY_DELETE(trigdata->tg_event)) + { + Tcl_DStringAppendElement(&tcl_cmd, "DELETE"); + + Tcl_DStringAppendElement(&tcl_cmd, ""); + Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_trigtup)); + + rettup = trigdata->tg_trigtuple; + } + else if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event)) + { + Tcl_DStringAppendElement(&tcl_cmd, "UPDATE"); + + pltcl_build_tuple_argument(trigdata->tg_newtuple, + tupdesc, &tcl_newtup); + + Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_newtup)); + Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_trigtup)); + + rettup = trigdata->tg_newtuple; + } + else + /* internal error */ + elog(ERROR, "unrecognized OP tg_event"); + } else if (TRIGGER_FIRED_FOR_STATEMENT(trigdata->tg_event)) + { Tcl_DStringAppendElement(&tcl_cmd, "STATEMENT"); ! if (TRIGGER_FIRED_BY_INSERT(trigdata->tg_event)) ! Tcl_DStringAppendElement(&tcl_cmd, "INSERT"); ! else if (TRIGGER_FIRED_BY_DELETE(trigdata->tg_event)) ! Tcl_DStringAppendElement(&tcl_cmd, "DELETE"); ! else if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event)) ! Tcl_DStringAppendElement(&tcl_cmd, "UPDATE"); ! else ! /* internal error */ ! elog(ERROR, "unrecognized OP tg_event"); Tcl_DStringAppendElement(&tcl_cmd, ""); Tcl_DStringAppendElement(&tcl_cmd, ""); ! rettup = (HeapTuple) NULL; } else ! /* internal error */ ! elog(ERROR, "unrecognized LEVEL tg_event"); memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart)); Tcl_DStringFree(&tcl_trigtup);