diff options
Diffstat (limited to 'src/backend/commands/trigger.c')
-rw-r--r-- | src/backend/commands/trigger.c | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index ef486998dde..01bacc0447f 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.137 2002/11/10 07:25:13 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.138 2002/11/11 03:02:18 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -94,7 +94,7 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint) constrrelid = RangeVarGetRelid(stmt->constrrel, false); else if (stmt->isconstraint) { - /* + /* * If this trigger is a constraint (and a foreign key one) * then we really need a constrrelid. Since we don't have one, * we'll try to generate one from the argument information. @@ -779,7 +779,8 @@ RelationBuildTriggers(Relation relation) RelationGetRelationName(relation)); /* Build trigdesc */ - trigdesc = (TriggerDesc *) palloc0(sizeof(TriggerDesc)); + trigdesc = (TriggerDesc *) palloc(sizeof(TriggerDesc)); + MemSet(trigdesc, 0, sizeof(TriggerDesc)); trigdesc->triggers = triggers; trigdesc->numtriggers = ntrigs; for (found = 0; found < ntrigs; found++) @@ -1145,8 +1146,12 @@ ExecBRInsertTriggers(EState *estate, ResultRelInfo *relinfo, /* Allocate cache space for fmgr lookup info, if not done yet */ if (relinfo->ri_TrigFunctions == NULL) + { relinfo->ri_TrigFunctions = (FmgrInfo *) - palloc0(trigdesc->numtriggers * sizeof(FmgrInfo)); + palloc(trigdesc->numtriggers * sizeof(FmgrInfo)); + MemSet(relinfo->ri_TrigFunctions, 0, + trigdesc->numtriggers * sizeof(FmgrInfo)); + } LocTriggerData.type = T_TriggerData; LocTriggerData.tg_event = TRIGGER_EVENT_INSERT | TRIGGER_EVENT_ROW | TRIGGER_EVENT_BEFORE; @@ -1201,8 +1206,12 @@ ExecBRDeleteTriggers(EState *estate, ResultRelInfo *relinfo, /* Allocate cache space for fmgr lookup info, if not done yet */ if (relinfo->ri_TrigFunctions == NULL) + { relinfo->ri_TrigFunctions = (FmgrInfo *) - palloc0(trigdesc->numtriggers * sizeof(FmgrInfo)); + palloc(trigdesc->numtriggers * sizeof(FmgrInfo)); + MemSet(relinfo->ri_TrigFunctions, 0, + trigdesc->numtriggers * sizeof(FmgrInfo)); + } LocTriggerData.type = T_TriggerData; LocTriggerData.tg_event = TRIGGER_EVENT_DELETE | TRIGGER_EVENT_ROW | TRIGGER_EVENT_BEFORE; @@ -1273,8 +1282,12 @@ ExecBRUpdateTriggers(EState *estate, ResultRelInfo *relinfo, /* Allocate cache space for fmgr lookup info, if not done yet */ if (relinfo->ri_TrigFunctions == NULL) + { relinfo->ri_TrigFunctions = (FmgrInfo *) - palloc0(trigdesc->numtriggers * sizeof(FmgrInfo)); + palloc(trigdesc->numtriggers * sizeof(FmgrInfo)); + MemSet(relinfo->ri_TrigFunctions, 0, + trigdesc->numtriggers * sizeof(FmgrInfo)); + } LocTriggerData.type = T_TriggerData; LocTriggerData.tg_event = TRIGGER_EVENT_UPDATE | TRIGGER_EVENT_ROW | TRIGGER_EVENT_BEFORE; @@ -1756,7 +1769,9 @@ deferredTriggerInvokeEvents(bool immediate_only) * Allocate space to cache fmgr lookup info for triggers. */ finfo = (FmgrInfo *) - palloc0(trigdesc->numtriggers * sizeof(FmgrInfo)); + palloc(trigdesc->numtriggers * sizeof(FmgrInfo)); + MemSet(finfo, 0, + trigdesc->numtriggers * sizeof(FmgrInfo)); } DeferredTriggerExecute(event, i, rel, trigdesc, finfo, |