>From 6df2abe044d570ed9e10286ab523d50b13b9595e Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: Wed, 18 Feb 2015 13:12:24 -0300
Subject: [PATCH 05/44] deparse/core: have ALTER EXTENSION ADD/DROP report OID
 of affected object

---
 src/backend/commands/extension.c | 6 +++++-
 src/backend/tcop/utility.c       | 3 ++-
 src/include/commands/extension.h | 3 ++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index 3b95552..73f8bea 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -2881,7 +2881,7 @@ ApplyExtensionUpdates(Oid extensionOid,
  * Execute ALTER EXTENSION ADD/DROP
  */
 Oid
-ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt)
+ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt, Oid *objectId)
 {
 	ObjectAddress extension;
 	ObjectAddress object;
@@ -2906,6 +2906,10 @@ ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt)
 	object = get_object_address(stmt->objtype, stmt->objname, stmt->objargs,
 								&relation, ShareUpdateExclusiveLock, false);
 
+	Assert(object.objectSubId == 0);
+	if (objectId)
+		*objectId = object.objectId;
+
 	/* Permission check: must own target object, too */
 	check_object_ownership(GetUserId(), stmt->objtype, object,
 						   stmt->objname, stmt->objargs, relation);
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 2b6fc3e..5f5f69c 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -1190,7 +1190,8 @@ ProcessUtilitySlow(Node *parsetree,
 				break;
 
 			case T_AlterExtensionContentsStmt:
-				ExecAlterExtensionContentsStmt((AlterExtensionContentsStmt *) parsetree);
+				ExecAlterExtensionContentsStmt((AlterExtensionContentsStmt *) parsetree,
+											   NULL);
 				break;
 
 			case T_CreateFdwStmt:
diff --git a/src/include/commands/extension.h b/src/include/commands/extension.h
index a349d6a..8df38f2 100644
--- a/src/include/commands/extension.h
+++ b/src/include/commands/extension.h
@@ -38,7 +38,8 @@ extern Oid InsertExtensionTuple(const char *extName, Oid extOwner,
 
 extern Oid	ExecAlterExtensionStmt(AlterExtensionStmt *stmt);
 
-extern Oid	ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt);
+extern Oid	ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt,
+							   Oid *objectId);
 
 extern Oid	get_extension_oid(const char *extname, bool missing_ok);
 extern char *get_extension_name(Oid ext_oid);
-- 
2.1.4

