diff options
Diffstat (limited to 'src/backend/commands/proclang.c')
-rw-r--r-- | src/backend/commands/proclang.c | 28 |
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); } |