Fix some omissions in the dependency-object-class support for SQL/MED objects.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 7 Aug 2009 15:27:56 +0000 (15:27 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 7 Aug 2009 15:27:56 +0000 (15:27 +0000)
Main problem found by Muhammad Aqeel, some cosmetic additions by me.

src/backend/catalog/dependency.c
src/backend/commands/tablecmds.c

index f33838277aae9d14b5698d9c19b258fb25dac83e..dd2b29a43d799208138bed13c27ed1526fe29571 100644 (file)
@@ -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);
index b4cc6ba95e7bca4b259ea130cb98bd5ee80b7d48..30a5c8b4546c0118f3a7fdda00a4436600eedd4b 100644 (file)
@@ -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