]> granicus.if.org Git - postgresql/blobdiff - src/backend/commands/trigger.c
Change representation of statement lists, and add statement location info.
[postgresql] / src / backend / commands / trigger.c
index 61666ad19238cc4bc7f8e5a2658f0355471229da..b404d1ea16ff99ef1198eb208aab28f913fa00cc 100644 (file)
@@ -1078,6 +1078,7 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid)
                AlterTableStmt *atstmt = makeNode(AlterTableStmt);
                AlterTableCmd *atcmd = makeNode(AlterTableCmd);
                Constraint *fkcon = makeNode(Constraint);
+               PlannedStmt *wrapper = makeNode(PlannedStmt);
 
                ereport(NOTICE,
                                (errmsg("converting trigger group into constraint \"%s\" %s",
@@ -1167,8 +1168,15 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid)
                fkcon->skip_validation = false;
                fkcon->initially_valid = true;
 
+               /* finally, wrap it in a dummy PlannedStmt */
+               wrapper->commandType = CMD_UTILITY;
+               wrapper->canSetTag = false;
+               wrapper->utilityStmt = (Node *) atstmt;
+               wrapper->stmt_location = -1;
+               wrapper->stmt_len = -1;
+
                /* ... and execute it */
-               ProcessUtility((Node *) atstmt,
+               ProcessUtility(wrapper,
                                           "(generated ALTER TABLE ADD FOREIGN KEY command)",
                                           PROCESS_UTILITY_SUBCOMMAND, NULL,
                                           None_Receiver, NULL);