diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-07-16 22:12:20 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-07-16 22:12:20 +0000 |
commit | 5af19e4227c4b1a1879956eb891af61469d3f8ba (patch) | |
tree | 3cc5204c0800d43e0b24864908778771a2562eda /src/backend/commands/proclang.c | |
parent | cdebcad6af70ec13bd89f11cf7f3d8b7d5278f50 (diff) |
Add more dependency insertions --- this completes the basic pg_depend
functionality. Of note: dropping a table that has a SERIAL column
defined now drops the associated sequence automatically.
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); } |