]> granicus.if.org Git - postgresql/commitdiff
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),