From 99a67fa63e5bcec6631c00253653717688bbdfde Mon Sep 17 00:00:00 2001
From: Andres Freund <andres@anarazel.de>
Date: Thu, 1 Dec 2011 14:18:55 +0100
Subject: [PATCH 1/3] Fix dependency recording for command triggers

* the oid is only defined after heap_insert
* use the correct relationship as classid
---
 src/backend/commands/cmdtrigger.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/src/backend/commands/cmdtrigger.c b/src/backend/commands/cmdtrigger.c
index 5a4d370..c6cda29 100644
--- a/src/backend/commands/cmdtrigger.c
+++ b/src/backend/commands/cmdtrigger.c
@@ -157,16 +157,13 @@ CreateCmdTrigger(CreateCmdTrigStmt *stmt, const char *queryString)
 
 	tuple = heap_form_tuple(tgrel->rd_att, values, nulls);
 
-	/* force tuple to have the desired OID */
-	trigoid = HeapTupleGetOid(tuple);
-
-	/*
-	 * Insert tuple into pg_trigger.
-	 */
 	simple_heap_insert(tgrel, tuple);
 
 	CatalogUpdateIndexes(tgrel, tuple);
 
+	/* remember oid for record dependencies */
+	trigoid = HeapTupleGetOid(tuple);
+
 	heap_freetuple(tuple);
 	heap_close(tgrel, RowExclusiveLock);
 
@@ -174,7 +171,7 @@ CreateCmdTrigger(CreateCmdTrigStmt *stmt, const char *queryString)
 	 * Record dependencies for trigger.  Always place a normal dependency on
 	 * the function.
 	 */
-	myself.classId = TriggerRelationId;
+	myself.classId = CmdTriggerRelationId;
 	myself.objectId = trigoid;
 	myself.objectSubId = 0;
 
-- 
1.7.6.409.ge7a85.dirty

