Temporary patch to try to debug why event trigger patch broke Windows.
authorRobert Haas <rhaas@postgresql.org>
Fri, 20 Jul 2012 20:20:15 +0000 (16:20 -0400)
committerRobert Haas <rhaas@postgresql.org>
Fri, 20 Jul 2012 20:22:11 +0000 (16:22 -0400)
Apologies for the ugliness.

src/pl/plpgsql/src/pl_comp.c

index 0dc0e0b37edfdc01bb118ba5437361490606f1c6..1d542fd661e42eaef7e85f8c6034757d294fa5bd 100644 (file)
@@ -285,6 +285,7 @@ do_compile(FunctionCallInfo fcinfo,
    int        *in_arg_varnos = NULL;
    PLpgSQL_variable **out_arg_variables;
    MemoryContext func_cxt;
+   PLpgSQL_trigtype fn_is_trigger;
 
    /*
     * Setup the scanner input and error info.  We assume that this function
@@ -352,11 +353,12 @@ do_compile(FunctionCallInfo fcinfo,
    function->resolve_option = plpgsql_variable_conflict;
 
    if (is_dml_trigger)
-       function->fn_is_trigger = PLPGSQL_DML_TRIGGER;
+       fn_is_trigger = PLPGSQL_DML_TRIGGER;
    else if (is_event_trigger)
-       function->fn_is_trigger = PLPGSQL_EVENT_TRIGGER;
+       fn_is_trigger = PLPGSQL_EVENT_TRIGGER;
    else
-       function->fn_is_trigger = PLPGSQL_NOT_TRIGGER;
+       fn_is_trigger = PLPGSQL_NOT_TRIGGER;
+   function->fn_is_trigger = fn_is_trigger;
 
    /*
     * Initialize the compiler, particularly the namespace stack.  The
@@ -374,6 +376,7 @@ do_compile(FunctionCallInfo fcinfo,
                                     sizeof(PLpgSQL_datum *) * datums_alloc);
    datums_last = 0;
 
+   Assert(fn_is_trigger == function->fn_is_trigger);
    switch (function->fn_is_trigger)
    {
        case PLPGSQL_NOT_TRIGGER:
@@ -537,9 +540,13 @@ do_compile(FunctionCallInfo fcinfo,
                    rettypeid == RECORDOID)
                     /* okay */ ;
                else if (rettypeid == TRIGGEROID || rettypeid == EVTTRIGGEROID)
+               {
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                            errmsg("trigger functions can only be called as triggers")));
+                            errmsg("trigger functions can only be called as triggers"),
+                            errhint("CALLED_AS_TRIGGER=%d CALLED_AS_EVENT_TRIGGER=%d",
+                           CALLED_AS_TRIGGER(fcinfo), CALLED_AS_EVENT_TRIGGER(fcinfo))));
+               }
                else
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),