aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/tablecmds.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands/tablecmds.c')
-rw-r--r--src/backend/commands/tablecmds.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 137dde37dda..41760f39b97 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.88 2003/10/11 18:04:25 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.89 2003/10/12 23:19:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -3449,6 +3449,7 @@ validateForeignKeyConstraint(FkConstraint *fkconstraint,
Relation pkrel)
{
HeapScanDesc scan;
+ TriggerData *trigdata = makeNode(TriggerData); /* must be Node aligned */
HeapTuple tuple;
Trigger trig;
List *list;
@@ -3506,7 +3507,6 @@ validateForeignKeyConstraint(FkConstraint *fkconstraint,
while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
{
FunctionCallInfoData fcinfo;
- TriggerData trigdata;
/*
* Make a call to the trigger function
@@ -3518,20 +3518,21 @@ validateForeignKeyConstraint(FkConstraint *fkconstraint,
/*
* We assume RI_FKey_check_ins won't look at flinfo...
*/
- trigdata.type = T_TriggerData;
- trigdata.tg_event = TRIGGER_EVENT_INSERT | TRIGGER_EVENT_ROW;
- trigdata.tg_relation = rel;
- trigdata.tg_trigtuple = tuple;
- trigdata.tg_newtuple = NULL;
- trigdata.tg_trigger = &trig;
+ trigdata->type = T_TriggerData;
+ trigdata->tg_event = TRIGGER_EVENT_INSERT | TRIGGER_EVENT_ROW;
+ trigdata->tg_relation = rel;
+ trigdata->tg_trigtuple = tuple;
+ trigdata->tg_newtuple = NULL;
+ trigdata->tg_trigger = &trig;
- fcinfo.context = (Node *) &trigdata;
+ fcinfo.context = (Node *) trigdata;
RI_FKey_check_ins(&fcinfo);
}
heap_endscan(scan);
+ pfree(trigdata);
pfree(trig.tgargs);
}