diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c
index ace8fd98c9ae9556c0fde1a6846d03ab00732d4d..e7a47e9ef4e3e09073cdcd25678a967ffafecfce 100644
--- a/src/pl/plpython/plpython.c
+++ b/src/pl/plpython/plpython.c
@@ -29,7 +29,7 @@
  * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- *	$Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.38 2003/08/04 01:57:58 tgl Exp $
+ *	$Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.39 2003/08/04 18:40:50 tgl Exp $
  *
  *********************************************************************
  */
@@ -651,68 +651,96 @@ PLy_trigger_build_args(FunctionCallInfo fcinfo, PLyProcedure * proc, HeapTuple *
 	Py_DECREF(pltrelid);
 	pfree(stroid);
 
-
-
 	if (TRIGGER_FIRED_BEFORE(tdata->tg_event))
 		pltwhen = PyString_FromString("BEFORE");
 	else if (TRIGGER_FIRED_AFTER(tdata->tg_event))
 		pltwhen = PyString_FromString("AFTER");
 	else
-		pltwhen = PyString_FromString("UNKNOWN");
+	{
+		elog(ERROR, "unrecognized WHEN tg_event: %u", tdata->tg_event);
+		pltwhen = NULL;			/* keep compiler quiet */
+	}
 	PyDict_SetItemString(pltdata, "when", pltwhen);
 	Py_DECREF(pltwhen);
 
 	if (TRIGGER_FIRED_FOR_ROW(tdata->tg_event))
+	{
 		pltlevel = PyString_FromString("ROW");
+		PyDict_SetItemString(pltdata, "level", pltlevel);
+		Py_DECREF(pltlevel);
+
+		if (TRIGGER_FIRED_BY_INSERT(tdata->tg_event))
+		{
+			pltevent = PyString_FromString("INSERT");
+
+			PyDict_SetItemString(pltdata, "old", Py_None);
+			pytnew = PLyDict_FromTuple(&(proc->result), tdata->tg_trigtuple,
+									   tdata->tg_relation->rd_att);
+			PyDict_SetItemString(pltdata, "new", pytnew);
+			Py_DECREF(pytnew);
+			*rv = tdata->tg_trigtuple;
+		}
+		else if (TRIGGER_FIRED_BY_DELETE(tdata->tg_event))
+		{
+			pltevent = PyString_FromString("DELETE");
+
+			PyDict_SetItemString(pltdata, "new", Py_None);
+			pytold = PLyDict_FromTuple(&(proc->result), tdata->tg_trigtuple,
+									   tdata->tg_relation->rd_att);
+			PyDict_SetItemString(pltdata, "old", pytold);
+			Py_DECREF(pytold);
+			*rv = tdata->tg_trigtuple;
+		}
+		else if (TRIGGER_FIRED_BY_UPDATE(tdata->tg_event))
+		{
+			pltevent = PyString_FromString("UPDATE");
+
+			pytnew = PLyDict_FromTuple(&(proc->result), tdata->tg_newtuple,
+									   tdata->tg_relation->rd_att);
+			PyDict_SetItemString(pltdata, "new", pytnew);
+			Py_DECREF(pytnew);
+			pytold = PLyDict_FromTuple(&(proc->result), tdata->tg_trigtuple,
+									   tdata->tg_relation->rd_att);
+			PyDict_SetItemString(pltdata, "old", pytold);
+			Py_DECREF(pytold);
+			*rv = tdata->tg_newtuple;
+		}
+		else
+		{
+			elog(ERROR, "unrecognized OP tg_event: %u", tdata->tg_event);
+			pltevent = NULL;	/* keep compiler quiet */
+		}
+
+		PyDict_SetItemString(pltdata, "event", pltevent);
+		Py_DECREF(pltevent);
+	}
 	else if (TRIGGER_FIRED_FOR_STATEMENT(tdata->tg_event))
+	{
 		pltlevel = PyString_FromString("STATEMENT");
-	else
-		pltlevel = PyString_FromString("UNKNOWN");
-	PyDict_SetItemString(pltdata, "level", pltlevel);
-	Py_DECREF(pltlevel);
+		PyDict_SetItemString(pltdata, "level", pltlevel);
+		Py_DECREF(pltlevel);
 
-	if (TRIGGER_FIRED_BY_INSERT(tdata->tg_event))
-	{
-		pltevent = PyString_FromString("INSERT");
 		PyDict_SetItemString(pltdata, "old", Py_None);
-		pytnew = PLyDict_FromTuple(&(proc->result), tdata->tg_trigtuple,
-								   tdata->tg_relation->rd_att);
-		PyDict_SetItemString(pltdata, "new", pytnew);
-		Py_DECREF(pytnew);
-		*rv = tdata->tg_trigtuple;
-	}
-	else if (TRIGGER_FIRED_BY_DELETE(tdata->tg_event))
-	{
-		pltevent = PyString_FromString("DELETE");
 		PyDict_SetItemString(pltdata, "new", Py_None);
-		pytold = PLyDict_FromTuple(&(proc->result), tdata->tg_trigtuple,
-								   tdata->tg_relation->rd_att);
-		PyDict_SetItemString(pltdata, "old", pytold);
-		Py_DECREF(pytold);
-		*rv = tdata->tg_trigtuple;
-	}
-	else if (TRIGGER_FIRED_BY_UPDATE(tdata->tg_event))
-	{
-		pltevent = PyString_FromString("UPDATE");
-		pytnew = PLyDict_FromTuple(&(proc->result), tdata->tg_newtuple,
-								   tdata->tg_relation->rd_att);
-		PyDict_SetItemString(pltdata, "new", pytnew);
-		Py_DECREF(pytnew);
-		pytold = PLyDict_FromTuple(&(proc->result), tdata->tg_trigtuple,
-								   tdata->tg_relation->rd_att);
-		PyDict_SetItemString(pltdata, "old", pytold);
-		Py_DECREF(pytold);
-		*rv = tdata->tg_newtuple;
+		*rv = (HeapTuple) NULL;
+
+		if (TRIGGER_FIRED_BY_INSERT(tdata->tg_event))
+			pltevent = PyString_FromString("INSERT");
+		else if (TRIGGER_FIRED_BY_DELETE(tdata->tg_event))
+			pltevent = PyString_FromString("DELETE");
+		else if (TRIGGER_FIRED_BY_UPDATE(tdata->tg_event))
+			pltevent = PyString_FromString("UPDATE");
+		else
+		{
+			elog(ERROR, "unrecognized OP tg_event: %u", tdata->tg_event);
+			pltevent = NULL;	/* keep compiler quiet */
+		}
+
+		PyDict_SetItemString(pltdata, "event", pltevent);
+		Py_DECREF(pltevent);
 	}
 	else
-	{
-		pltevent = PyString_FromString("UNKNOWN");
-		PyDict_SetItemString(pltdata, "old", Py_None);
-		PyDict_SetItemString(pltdata, "new", Py_None);
-		*rv = tdata->tg_trigtuple;
-	}
-	PyDict_SetItemString(pltdata, "event", pltevent);
-	Py_DECREF(pltevent);
+		elog(ERROR, "unrecognized LEVEL tg_event: %u", tdata->tg_event);
 
 	if (tdata->tg_trigger->tgnargs)
 	{
diff --git a/src/pl/tcl/pltcl.c b/src/pl/tcl/pltcl.c
index 366903618b22c9cd16b6c4deb2e8943af5324002..54f4b561117120287996189f2a2ee7003636b7c7 100644
--- a/src/pl/tcl/pltcl.c
+++ b/src/pl/tcl/pltcl.c
@@ -31,7 +31,7 @@
  *	  ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.74 2003/08/04 00:43:33 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.75 2003/08/04 18:40:50 tgl Exp $
  *
  **********************************************************************/
 
@@ -708,63 +708,74 @@ pltcl_trigger_handler(PG_FUNCTION_ARGS)
 	else if (TRIGGER_FIRED_AFTER(trigdata->tg_event))
 		Tcl_DStringAppendElement(&tcl_cmd, "AFTER");
 	else
-		Tcl_DStringAppendElement(&tcl_cmd, "UNKNOWN");
+		elog(ERROR, "unrecognized WHEN tg_event: %u", trigdata->tg_event);
 
 	/* 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);
+		/* 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");
+		/*
+		 * 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, "");
+			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");
+			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));
+			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");
+			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);
+			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));
+			Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_newtup));
+			Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_trigtup));
 
-		rettup = trigdata->tg_newtuple;
+			rettup = trigdata->tg_newtuple;
+		}
+		else
+			elog(ERROR, "unrecognized OP tg_event: %u", trigdata->tg_event);
 	}
-	else
+	else if (TRIGGER_FIRED_FOR_STATEMENT(trigdata->tg_event))
 	{
-		Tcl_DStringAppendElement(&tcl_cmd, "UNKNOWN");
+		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
+			elog(ERROR, "unrecognized OP tg_event: %u", trigdata->tg_event);
 
-		Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_trigtup));
-		Tcl_DStringAppendElement(&tcl_cmd, Tcl_DStringValue(&tcl_trigtup));
+		Tcl_DStringAppendElement(&tcl_cmd, "");
+		Tcl_DStringAppendElement(&tcl_cmd, "");
 
-		rettup = trigdata->tg_trigtuple;
+		rettup = (HeapTuple) NULL;
 	}
+	else
+		elog(ERROR, "unrecognized LEVEL tg_event: %u", trigdata->tg_event);
 
 	memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
 	Tcl_DStringFree(&tcl_trigtup);