Temporary patch to try to debug why event trigger patch broke Windows.

Apologies for the ugliness.
This commit is contained in:
Robert Haas 2012-07-20 16:20:15 -04:00
parent ae55d9fbe3
commit 0a248208a0

View File

@ -285,6 +285,7 @@ do_compile(FunctionCallInfo fcinfo,
int *in_arg_varnos = NULL; int *in_arg_varnos = NULL;
PLpgSQL_variable **out_arg_variables; PLpgSQL_variable **out_arg_variables;
MemoryContext func_cxt; MemoryContext func_cxt;
PLpgSQL_trigtype fn_is_trigger;
/* /*
* Setup the scanner input and error info. We assume that this function * 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; function->resolve_option = plpgsql_variable_conflict;
if (is_dml_trigger) if (is_dml_trigger)
function->fn_is_trigger = PLPGSQL_DML_TRIGGER; fn_is_trigger = PLPGSQL_DML_TRIGGER;
else if (is_event_trigger) else if (is_event_trigger)
function->fn_is_trigger = PLPGSQL_EVENT_TRIGGER; fn_is_trigger = PLPGSQL_EVENT_TRIGGER;
else 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 * Initialize the compiler, particularly the namespace stack. The
@ -374,6 +376,7 @@ do_compile(FunctionCallInfo fcinfo,
sizeof(PLpgSQL_datum *) * datums_alloc); sizeof(PLpgSQL_datum *) * datums_alloc);
datums_last = 0; datums_last = 0;
Assert(fn_is_trigger == function->fn_is_trigger);
switch (function->fn_is_trigger) switch (function->fn_is_trigger)
{ {
case PLPGSQL_NOT_TRIGGER: case PLPGSQL_NOT_TRIGGER:
@ -537,9 +540,13 @@ do_compile(FunctionCallInfo fcinfo,
rettypeid == RECORDOID) rettypeid == RECORDOID)
/* okay */ ; /* okay */ ;
else if (rettypeid == TRIGGEROID || rettypeid == EVTTRIGGEROID) else if (rettypeid == TRIGGEROID || rettypeid == EVTTRIGGEROID)
{
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (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 else
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),