From 1db089f48db16c084f285a115368a49b574c8174 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 7 Aug 2009 15:27:56 +0000 Subject: [PATCH] Fix some omissions in the dependency-object-class support for SQL/MED objects. Main problem found by Muhammad Aqeel, some cosmetic additions by me. --- src/backend/catalog/dependency.c | 20 +++++++++++++------- src/backend/commands/tablecmds.c | 8 ++++++++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c index f33838277a..dd2b29a43d 100644 --- a/src/backend/catalog/dependency.c +++ b/src/backend/catalog/dependency.c @@ -143,7 +143,10 @@ static const Oid object_classes[MAX_OCLASS] = { TSConfigRelationId, /* OCLASS_TSCONFIG */ AuthIdRelationId, /* OCLASS_ROLE */ DatabaseRelationId, /* OCLASS_DATABASE */ - TableSpaceRelationId /* OCLASS_TBLSPACE */ + TableSpaceRelationId, /* OCLASS_TBLSPACE */ + ForeignDataWrapperRelationId, /* OCLASS_FDW */ + ForeignServerRelationId, /* OCLASS_FOREIGN_SERVER */ + UserMappingRelationId /* OCLASS_USER_MAPPING */ }; @@ -1115,20 +1118,23 @@ doDeletion(const ObjectAddress *object) RemoveTSConfigurationById(object->objectId); break; - case OCLASS_USER_MAPPING: - RemoveUserMappingById(object->objectId); + /* + * OCLASS_ROLE, OCLASS_DATABASE, OCLASS_TBLSPACE intentionally + * not handled here + */ + + case OCLASS_FDW: + RemoveForeignDataWrapperById(object->objectId); break; case OCLASS_FOREIGN_SERVER: RemoveForeignServerById(object->objectId); break; - case OCLASS_FDW: - RemoveForeignDataWrapperById(object->objectId); + case OCLASS_USER_MAPPING: + RemoveUserMappingById(object->objectId); break; - /* OCLASS_ROLE, OCLASS_DATABASE, OCLASS_TBLSPACE not handled */ - default: elog(ERROR, "unrecognized object class: %u", object->classId); diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index b4cc6ba95e..30a5c8b454 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -6037,12 +6037,20 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel, case OCLASS_OPERATOR: case OCLASS_OPCLASS: case OCLASS_OPFAMILY: + case OCLASS_AMOP: + case OCLASS_AMPROC: case OCLASS_TRIGGER: case OCLASS_SCHEMA: case OCLASS_TSPARSER: case OCLASS_TSDICT: case OCLASS_TSTEMPLATE: case OCLASS_TSCONFIG: + case OCLASS_ROLE: + case OCLASS_DATABASE: + case OCLASS_TBLSPACE: + case OCLASS_FDW: + case OCLASS_FOREIGN_SERVER: + case OCLASS_USER_MAPPING: /* * We don't expect any of these sorts of objects to depend on -- 2.30.2