MCPcopy Create free account
hub / github.com/apache/cloudberry / ExecBSInsertTriggers

Function ExecBSInsertTriggers

src/backend/commands/trigger.c:2272–2321  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2270}
2271
2272void
2273ExecBSInsertTriggers(EState *estate, ResultRelInfo *relinfo)
2274{
2275 TriggerDesc *trigdesc;
2276 int i;
2277 TriggerData LocTriggerData = {0};
2278
2279 trigdesc = relinfo->ri_TrigDesc;
2280
2281 if (trigdesc == NULL)
2282 return;
2283 if (!trigdesc->trig_insert_before_statement)
2284 return;
2285
2286 /* no-op if we already fired BS triggers in this context */
2287 if (before_stmt_triggers_fired(RelationGetRelid(relinfo->ri_RelationDesc),
2288 CMD_INSERT))
2289 return;
2290
2291 LocTriggerData.type = T_TriggerData;
2292 LocTriggerData.tg_event = TRIGGER_EVENT_INSERT |
2293 TRIGGER_EVENT_BEFORE;
2294 LocTriggerData.tg_relation = relinfo->ri_RelationDesc;
2295 for (i = 0; i < trigdesc->numtriggers; i++)
2296 {
2297 Trigger *trigger = &trigdesc->triggers[i];
2298 HeapTuple newtuple;
2299
2300 if (!TRIGGER_TYPE_MATCHES(trigger->tgtype,
2301 TRIGGER_TYPE_STATEMENT,
2302 TRIGGER_TYPE_BEFORE,
2303 TRIGGER_TYPE_INSERT))
2304 continue;
2305 if (!TriggerEnabled(estate, relinfo, trigger, LocTriggerData.tg_event,
2306 NULL, NULL, NULL))
2307 continue;
2308
2309 LocTriggerData.tg_trigger = trigger;
2310 newtuple = ExecCallTriggerFunc(&LocTriggerData,
2311 i,
2312 relinfo->ri_TrigFunctions,
2313 relinfo->ri_TrigInstrument,
2314 GetPerTupleMemoryContext(estate));
2315
2316 if (newtuple)
2317 ereport(ERROR,
2318 (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
2319 errmsg("BEFORE STATEMENT trigger cannot return a value")));
2320 }
2321}
2322
2323void
2324ExecASInsertTriggers(EState *estate, ResultRelInfo *relinfo,

Callers 3

CopyFromDirectoryTableFunction · 0.85
CopyFromFunction · 0.85
fireBSTriggersFunction · 0.85

Calls 5

TriggerEnabledFunction · 0.85
ExecCallTriggerFuncFunction · 0.85
errcodeFunction · 0.50
errmsgFunction · 0.50

Tested by

no test coverage detected