aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/proclang.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands/proclang.c')
-rw-r--r--src/backend/commands/proclang.c28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c
index 56dc320e2ef..98b61324262 100644
--- a/src/backend/commands/proclang.c
+++ b/src/backend/commands/proclang.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/proclang.c,v 1.35 2002/07/12 18:43:16 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/proclang.c,v 1.36 2002/07/16 22:12:19 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -49,6 +49,8 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
HeapTuple tup;
TupleDesc tupDesc;
int i;
+ ObjectAddress myself,
+ referenced;
/*
* Check permission
@@ -91,7 +93,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
NameListToString(stmt->plvalidator));
}
else
- valProcOid = 0;
+ valProcOid = InvalidOid;
/*
* Insert the new language into pg_language
@@ -128,6 +130,28 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
CatalogCloseIndices(Num_pg_language_indices, idescs);
}
+ /*
+ * Create dependencies for language
+ */
+ myself.classId = RelationGetRelid(rel);
+ myself.objectId = tup->t_data->t_oid;
+ myself.objectSubId = 0;
+
+ /* dependency on the PL handler function */
+ referenced.classId = RelOid_pg_proc;
+ referenced.objectId = procOid;
+ referenced.objectSubId = 0;
+ recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+
+ /* dependency on the validator function, if any */
+ if (OidIsValid(valProcOid))
+ {
+ referenced.classId = RelOid_pg_proc;
+ referenced.objectId = valProcOid;
+ referenced.objectSubId = 0;
+ recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ }
+
heap_close(rel, RowExclusiveLock);
}