summaryrefslogtreecommitdiff
path: root/src/backend/catalog/dependency.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/catalog/dependency.c')
-rw-r--r--src/backend/catalog/dependency.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index 527cca3a85..d2dc8b3795 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/dependency.c,v 1.3 2002/07/16 05:53:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/dependency.c,v 1.4 2002/07/18 16:47:22 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -25,12 +25,14 @@
#include "catalog/pg_constraint.h"
#include "catalog/pg_depend.h"
#include "catalog/pg_language.h"
+#include "catalog/pg_namespace.h"
#include "catalog/pg_rewrite.h"
#include "catalog/pg_trigger.h"
#include "catalog/pg_type.h"
#include "commands/comment.h"
#include "commands/defrem.h"
#include "commands/proclang.h"
+#include "commands/schemacmds.h"
#include "commands/trigger.h"
#include "lib/stringinfo.h"
#include "miscadmin.h"
@@ -54,6 +56,7 @@ typedef enum ObjectClasses
OCLASS_OPERATOR, /* pg_operator */
OCLASS_REWRITE, /* pg_rewrite */
OCLASS_TRIGGER, /* pg_trigger */
+ OCLASS_SCHEMA, /* pg_namespace */
MAX_OCLASS /* MUST BE LAST */
} ObjectClasses;
@@ -597,6 +600,10 @@ doDeletion(const ObjectAddress *object)
RemoveTriggerById(object->objectId);
break;
+ case OCLASS_SCHEMA:
+ RemoveSchemaById(object->objectId);
+ break;
+
default:
elog(ERROR, "doDeletion: Unsupported object class %u",
object->classId);
@@ -981,6 +988,7 @@ init_object_classes(void)
object_classes[OCLASS_OPERATOR] = get_system_catalog_relid(OperatorRelationName);
object_classes[OCLASS_REWRITE] = get_system_catalog_relid(RewriteRelationName);
object_classes[OCLASS_TRIGGER] = get_system_catalog_relid(TriggerRelationName);
+ object_classes[OCLASS_SCHEMA] = get_system_catalog_relid(NamespaceRelationName);
object_classes_initialized = true;
}
@@ -1045,6 +1053,11 @@ getObjectClass(const ObjectAddress *object)
Assert(object->objectSubId == 0);
return OCLASS_TRIGGER;
}
+ if (object->classId == object_classes[OCLASS_SCHEMA])
+ {
+ Assert(object->objectSubId == 0);
+ return OCLASS_SCHEMA;
+ }
elog(ERROR, "getObjectClass: Unknown object class %u",
object->classId);
@@ -1265,6 +1278,22 @@ getObjectDescription(const ObjectAddress *object)
break;
}
+ case OCLASS_SCHEMA:
+ {
+ HeapTuple schemaTup;
+
+ schemaTup = SearchSysCache(NAMESPACEOID,
+ ObjectIdGetDatum(object->objectId),
+ 0, 0, 0);
+ if (!HeapTupleIsValid(schemaTup))
+ elog(ERROR, "getObjectDescription: Schema %u does not exist",
+ object->objectId);
+ appendStringInfo(&buffer, "schema %s",
+ NameStr(((Form_pg_namespace) GETSTRUCT(schemaTup))->nspname));
+ ReleaseSysCache(schemaTup);
+ break;
+ }
+
default:
appendStringInfo(&buffer, "unknown object %u %u %d",
object->classId,