*/
if (newstyle) {
ev->tgargs = find_trigger_info(ev->info, tg->tg_trigger->tgoid, false);
- if (!ev->tgargs) {
+ if (!ev->tgargs || !ev->tgargs->finalized) {
ev->tgargs = find_trigger_info(ev->info, tg->tg_trigger->tgoid, true);
parse_newstyle_args(ev, tg);
}
} else {
parse_oldstyle_args(ev, tg);
}
+ ev->tgargs->finalized = true;
/*
* init data
struct PgqTriggerInfo {
struct PgqTriggerInfo *next;
Oid tgoid;
-
- const char *ignore_list;
- const char *pkey_list;
+ bool finalized;
bool skip;
bool backup;
bool custom_fields;
+ const char *ignore_list;
+ const char *pkey_list;
+
struct QueryBuilder *query[EV_NFIELDS];
};
char nulls[FUNC_MAX_ARGS];
int i;
+ if (!q->plan)
+ elog(ERROR, "QB: query not prepared yet");
+
for (i = 0; i < q->nargs; i++) {
bool isnull = false;
values[i] = q->op->value_lookup(arg, q->arg_map[i], &isnull);