From 0c901266a1b40a257320166fdacaaefd00e4dbce Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Mon, 24 Feb 2020 10:12:10 +0100 Subject: [PATCH 1/2] Code simplification Initialize TriggerData to 0 for the whole struct together, instead of each field separately. --- src/backend/commands/tablecmds.c | 4 +- src/backend/commands/trigger.c | 78 +++++--------------------------- 2 files changed, 12 insertions(+), 70 deletions(-) diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index b7c8d663fc..6af984ff10 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -10264,7 +10264,7 @@ validateForeignKeyConstraint(char *conname, while (table_scan_getnextslot(scan, ForwardScanDirection, slot)) { LOCAL_FCINFO(fcinfo, 0); - TriggerData trigdata; + TriggerData trigdata = {0}; CHECK_FOR_INTERRUPTS(); @@ -10283,8 +10283,6 @@ validateForeignKeyConstraint(char *conname, trigdata.tg_relation = rel; trigdata.tg_trigtuple = ExecFetchSlotHeapTuple(slot, false, NULL); trigdata.tg_trigslot = slot; - trigdata.tg_newtuple = NULL; - trigdata.tg_newslot = NULL; trigdata.tg_trigger = &trig; fcinfo->context = (Node *) &trigdata; diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index b9b1262e30..26593576fd 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -2458,7 +2458,7 @@ ExecBSInsertTriggers(EState *estate, ResultRelInfo *relinfo) { TriggerDesc *trigdesc; int i; - TriggerData LocTriggerData; + TriggerData LocTriggerData = {0}; trigdesc = relinfo->ri_TrigDesc; @@ -2476,12 +2476,6 @@ ExecBSInsertTriggers(EState *estate, ResultRelInfo *relinfo) LocTriggerData.tg_event = TRIGGER_EVENT_INSERT | TRIGGER_EVENT_BEFORE; LocTriggerData.tg_relation = relinfo->ri_RelationDesc; - LocTriggerData.tg_trigtuple = NULL; - LocTriggerData.tg_newtuple = NULL; - LocTriggerData.tg_trigslot = NULL; - LocTriggerData.tg_newslot = NULL; - LocTriggerData.tg_oldtable = NULL; - LocTriggerData.tg_newtable = NULL; for (i = 0; i < trigdesc->numtriggers; i++) { Trigger *trigger = &trigdesc->triggers[i]; @@ -2528,7 +2522,7 @@ ExecBRInsertTriggers(EState *estate, ResultRelInfo *relinfo, TriggerDesc *trigdesc = relinfo->ri_TrigDesc; HeapTuple newtuple = NULL; bool should_free; - TriggerData LocTriggerData; + TriggerData LocTriggerData = {0}; int i; LocTriggerData.type = T_TriggerData; @@ -2536,12 +2530,6 @@ ExecBRInsertTriggers(EState *estate, ResultRelInfo *relinfo, TRIGGER_EVENT_ROW | TRIGGER_EVENT_BEFORE; LocTriggerData.tg_relation = relinfo->ri_RelationDesc; - LocTriggerData.tg_trigtuple = NULL; - LocTriggerData.tg_newtuple = NULL; - LocTriggerData.tg_trigslot = NULL; - LocTriggerData.tg_newslot = NULL; - LocTriggerData.tg_oldtable = NULL; - LocTriggerData.tg_newtable = NULL; for (i = 0; i < trigdesc->numtriggers; i++) { Trigger *trigger = &trigdesc->triggers[i]; @@ -2610,7 +2598,7 @@ ExecIRInsertTriggers(EState *estate, ResultRelInfo *relinfo, TriggerDesc *trigdesc = relinfo->ri_TrigDesc; HeapTuple newtuple = NULL; bool should_free; - TriggerData LocTriggerData; + TriggerData LocTriggerData = {0}; int i; LocTriggerData.type = T_TriggerData; @@ -2618,12 +2606,6 @@ ExecIRInsertTriggers(EState *estate, ResultRelInfo *relinfo, TRIGGER_EVENT_ROW | TRIGGER_EVENT_INSTEAD; LocTriggerData.tg_relation = relinfo->ri_RelationDesc; - LocTriggerData.tg_trigtuple = NULL; - LocTriggerData.tg_newtuple = NULL; - LocTriggerData.tg_trigslot = NULL; - LocTriggerData.tg_newslot = NULL; - LocTriggerData.tg_oldtable = NULL; - LocTriggerData.tg_newtable = NULL; for (i = 0; i < trigdesc->numtriggers; i++) { Trigger *trigger = &trigdesc->triggers[i]; @@ -2675,7 +2657,7 @@ ExecBSDeleteTriggers(EState *estate, ResultRelInfo *relinfo) { TriggerDesc *trigdesc; int i; - TriggerData LocTriggerData; + TriggerData LocTriggerData = {0}; trigdesc = relinfo->ri_TrigDesc; @@ -2693,12 +2675,6 @@ ExecBSDeleteTriggers(EState *estate, ResultRelInfo *relinfo) LocTriggerData.tg_event = TRIGGER_EVENT_DELETE | TRIGGER_EVENT_BEFORE; LocTriggerData.tg_relation = relinfo->ri_RelationDesc; - LocTriggerData.tg_trigtuple = NULL; - LocTriggerData.tg_newtuple = NULL; - LocTriggerData.tg_trigslot = NULL; - LocTriggerData.tg_newslot = NULL; - LocTriggerData.tg_oldtable = NULL; - LocTriggerData.tg_newtable = NULL; for (i = 0; i < trigdesc->numtriggers; i++) { Trigger *trigger = &trigdesc->triggers[i]; @@ -2755,7 +2731,7 @@ ExecBRDeleteTriggers(EState *estate, EPQState *epqstate, TupleTableSlot *slot = ExecGetTriggerOldSlot(estate, relinfo); TriggerDesc *trigdesc = relinfo->ri_TrigDesc; bool result = true; - TriggerData LocTriggerData; + TriggerData LocTriggerData = {0}; HeapTuple trigtuple; bool should_free = false; int i; @@ -2794,12 +2770,6 @@ ExecBRDeleteTriggers(EState *estate, EPQState *epqstate, TRIGGER_EVENT_ROW | TRIGGER_EVENT_BEFORE; LocTriggerData.tg_relation = relinfo->ri_RelationDesc; - LocTriggerData.tg_trigtuple = NULL; - LocTriggerData.tg_newtuple = NULL; - LocTriggerData.tg_trigslot = NULL; - LocTriggerData.tg_newslot = NULL; - LocTriggerData.tg_oldtable = NULL; - LocTriggerData.tg_newtable = NULL; for (i = 0; i < trigdesc->numtriggers; i++) { HeapTuple newtuple; @@ -2872,7 +2842,7 @@ ExecIRDeleteTriggers(EState *estate, ResultRelInfo *relinfo, { TriggerDesc *trigdesc = relinfo->ri_TrigDesc; TupleTableSlot *slot = ExecGetTriggerOldSlot(estate, relinfo); - TriggerData LocTriggerData; + TriggerData LocTriggerData = {0}; int i; LocTriggerData.type = T_TriggerData; @@ -2880,12 +2850,6 @@ ExecIRDeleteTriggers(EState *estate, ResultRelInfo *relinfo, TRIGGER_EVENT_ROW | TRIGGER_EVENT_INSTEAD; LocTriggerData.tg_relation = relinfo->ri_RelationDesc; - LocTriggerData.tg_trigtuple = NULL; - LocTriggerData.tg_newtuple = NULL; - LocTriggerData.tg_trigslot = NULL; - LocTriggerData.tg_newslot = NULL; - LocTriggerData.tg_oldtable = NULL; - LocTriggerData.tg_newtable = NULL; ExecForceStoreHeapTuple(trigtuple, slot, false); @@ -2924,7 +2888,7 @@ ExecBSUpdateTriggers(EState *estate, ResultRelInfo *relinfo) { TriggerDesc *trigdesc; int i; - TriggerData LocTriggerData; + TriggerData LocTriggerData = {0}; Bitmapset *updatedCols; trigdesc = relinfo->ri_TrigDesc; @@ -2945,12 +2909,6 @@ ExecBSUpdateTriggers(EState *estate, ResultRelInfo *relinfo) LocTriggerData.tg_event = TRIGGER_EVENT_UPDATE | TRIGGER_EVENT_BEFORE; LocTriggerData.tg_relation = relinfo->ri_RelationDesc; - LocTriggerData.tg_trigtuple = NULL; - LocTriggerData.tg_newtuple = NULL; - LocTriggerData.tg_trigslot = NULL; - LocTriggerData.tg_newslot = NULL; - LocTriggerData.tg_oldtable = NULL; - LocTriggerData.tg_newtable = NULL; for (i = 0; i < trigdesc->numtriggers; i++) { Trigger *trigger = &trigdesc->triggers[i]; @@ -3005,7 +2963,7 @@ ExecBRUpdateTriggers(EState *estate, EPQState *epqstate, HeapTuple trigtuple; bool should_free_trig = false; bool should_free_new = false; - TriggerData LocTriggerData; + TriggerData LocTriggerData = {0}; int i; Bitmapset *updatedCols; LockTupleMode lockmode; @@ -3058,8 +3016,6 @@ ExecBRUpdateTriggers(EState *estate, EPQState *epqstate, TRIGGER_EVENT_ROW | TRIGGER_EVENT_BEFORE; LocTriggerData.tg_relation = relinfo->ri_RelationDesc; - LocTriggerData.tg_oldtable = NULL; - LocTriggerData.tg_newtable = NULL; updatedCols = GetAllUpdatedColumns(relinfo, estate); for (i = 0; i < trigdesc->numtriggers; i++) { @@ -3173,7 +3129,7 @@ ExecIRUpdateTriggers(EState *estate, ResultRelInfo *relinfo, TupleTableSlot *oldslot = ExecGetTriggerOldSlot(estate, relinfo); HeapTuple newtuple = NULL; bool should_free; - TriggerData LocTriggerData; + TriggerData LocTriggerData = {0}; int i; LocTriggerData.type = T_TriggerData; @@ -3181,8 +3137,6 @@ ExecIRUpdateTriggers(EState *estate, ResultRelInfo *relinfo, TRIGGER_EVENT_ROW | TRIGGER_EVENT_INSTEAD; LocTriggerData.tg_relation = relinfo->ri_RelationDesc; - LocTriggerData.tg_oldtable = NULL; - LocTriggerData.tg_newtable = NULL; ExecForceStoreHeapTuple(trigtuple, oldslot, false); @@ -3238,7 +3192,7 @@ ExecBSTruncateTriggers(EState *estate, ResultRelInfo *relinfo) { TriggerDesc *trigdesc; int i; - TriggerData LocTriggerData; + TriggerData LocTriggerData = {0}; trigdesc = relinfo->ri_TrigDesc; @@ -3251,12 +3205,6 @@ ExecBSTruncateTriggers(EState *estate, ResultRelInfo *relinfo) LocTriggerData.tg_event = TRIGGER_EVENT_TRUNCATE | TRIGGER_EVENT_BEFORE; LocTriggerData.tg_relation = relinfo->ri_RelationDesc; - LocTriggerData.tg_trigtuple = NULL; - LocTriggerData.tg_newtuple = NULL; - LocTriggerData.tg_trigslot = NULL; - LocTriggerData.tg_newslot = NULL; - LocTriggerData.tg_oldtable = NULL; - LocTriggerData.tg_newtable = NULL; for (i = 0; i < trigdesc->numtriggers; i++) { @@ -4182,7 +4130,7 @@ AfterTriggerExecute(EState *estate, Relation rel = relInfo->ri_RelationDesc; AfterTriggerShared evtshared = GetTriggerSharedData(event); Oid tgoid = evtshared->ats_tgoid; - TriggerData LocTriggerData; + TriggerData LocTriggerData = {0}; HeapTuple rettuple; int tgindx; bool should_free_trig = false; @@ -4191,10 +4139,6 @@ AfterTriggerExecute(EState *estate, /* * Locate trigger in trigdesc. */ - LocTriggerData.tg_trigger = NULL; - LocTriggerData.tg_trigslot = NULL; - LocTriggerData.tg_newslot = NULL; - for (tgindx = 0; tgindx < trigdesc->numtriggers; tgindx++) { if (trigdesc->triggers[tgindx].tgoid == tgoid) -- 2.25.0