aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/functioncmds.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands/functioncmds.c')
-rw-r--r--src/backend/commands/functioncmds.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index bcc3a883675..aa8c516640e 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -1278,6 +1278,8 @@ SetFunctionReturnType(Oid funcOid, Oid newRetType)
Relation pg_proc_rel;
HeapTuple tup;
Form_pg_proc procForm;
+ ObjectAddress func_address;
+ ObjectAddress type_address;
pg_proc_rel = heap_open(ProcedureRelationId, RowExclusiveLock);
@@ -1298,6 +1300,14 @@ SetFunctionReturnType(Oid funcOid, Oid newRetType)
CatalogUpdateIndexes(pg_proc_rel, tup);
heap_close(pg_proc_rel, RowExclusiveLock);
+
+ /*
+ * Also update the dependency to the new type. Opaque is a pinned type, so
+ * there is no old dependency record for it that we would need to remove.
+ */
+ ObjectAddressSet(type_address, TypeRelationId, newRetType);
+ ObjectAddressSet(func_address, ProcedureRelationId, funcOid);
+ recordDependencyOn(&func_address, &type_address, DEPENDENCY_NORMAL);
}
@@ -1312,6 +1322,8 @@ SetFunctionArgType(Oid funcOid, int argIndex, Oid newArgType)
Relation pg_proc_rel;
HeapTuple tup;
Form_pg_proc procForm;
+ ObjectAddress func_address;
+ ObjectAddress type_address;
pg_proc_rel = heap_open(ProcedureRelationId, RowExclusiveLock);
@@ -1333,6 +1345,14 @@ SetFunctionArgType(Oid funcOid, int argIndex, Oid newArgType)
CatalogUpdateIndexes(pg_proc_rel, tup);
heap_close(pg_proc_rel, RowExclusiveLock);
+
+ /*
+ * Also update the dependency to the new type. Opaque is a pinned type, so
+ * there is no old dependency record for it that we would need to remove.
+ */
+ ObjectAddressSet(type_address, TypeRelationId, newArgType);
+ ObjectAddressSet(func_address, ProcedureRelationId, funcOid);
+ recordDependencyOn(&func_address, &type_address, DEPENDENCY_NORMAL);
}