[1mdiff --git a/src/backend/catalog/pg_inherits.c b/src/backend/catalog/pg_inherits.c[m
[1mindex 1bd8a58b7f..74903a8f24 100644[m
[1m--- a/src/backend/catalog/pg_inherits.c[m
[1m+++ b/src/backend/catalog/pg_inherits.c[m
[36m@@ -242,6 +242,40 @@[m [mfind_all_inheritors(Oid parentrelId, LOCKMODE lockmode, List **numparents)[m
 }[m
 [m
 [m
[32m+[m[32m/*[m
[32m+[m[32m * get_superclasses -[m
[32m+[m[32m *		Returns a list of relation OIDs of direct parents[m
[32m+[m[32m */[m
[32m+[m[32mList *[m
[32m+[m[32mget_superclasses(Oid relationId)[m
[32m+[m[32m{[m
[32m+[m	[32mList	   *list = NIL;[m
[32m+[m	[32mRelation	catalog;[m
[32m+[m	[32mSysScanDesc scan;[m
[32m+[m	[32mScanKeyData skey;[m
[32m+[m	[32mHeapTuple	inheritsTuple;[m
[32m+[m	[32mOid			inhparent;[m
[32m+[m
[32m+[m	[32mcatalog = heap_open(InheritsRelationId, AccessShareLock);[m
[32m+[m	[32mScanKeyInit(&skey, Anum_pg_inherits_inhrelid, BTEqualStrategyNumber,[m
[32m+[m				[32mF_OIDEQ, ObjectIdGetDatum(relationId));[m
[32m+[m	[32mscan = systable_beginscan(catalog, InheritsRelidSeqnoIndexId, true,[m
[32m+[m							[32m  NULL, 1, &skey);[m
[32m+[m
[32m+[m	[32mwhile ((inheritsTuple = systable_getnext(scan)) != NULL)[m
[32m+[m	[32m{[m
[32m+[m		[32minhparent = ((Form_pg_inherits) GETSTRUCT(inheritsTuple))->inhparent;[m
[32m+[m		[32mlist = lappend_oid(list, inhparent);[m
[32m+[m	[32m}[m
[32m+[m
[32m+[m	[32msystable_endscan(scan);[m
[32m+[m
[32m+[m	[32mheap_close(catalog, AccessShareLock);[m
[32m+[m
[32m+[m	[32mreturn list;[m
[32m+[m[32m}[m
[32m+[m
[32m+[m
 /*[m
  * has_subclass - does this relation have any children?[m
  *[m
[1mdiff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c[m
[1mindex d979ce266d..c76fc3715d 100644[m
[1m--- a/src/backend/commands/tablecmds.c[m
[1m+++ b/src/backend/commands/tablecmds.c[m
[36m@@ -5683,6 +5683,8 @@[m [mATExecDropNotNull(Relation rel, const char *colName, LOCKMODE lockmode)[m
 	Relation	attr_rel;[m
 	List	   *indexoidlist;[m
 	ListCell   *indexoidscan;[m
[32m+[m	[32mList	   *parentlist;[m
[32m+[m	[32mListCell   *parentscan;[m
 	ObjectAddress address;[m
 [m
 	/*[m
[36m@@ -5773,6 +5775,24 @@[m [mATExecDropNotNull(Relation rel, const char *colName, LOCKMODE lockmode)[m
 		heap_close(parent, AccessShareLock);[m
 	}[m
 [m
[32m+[m	[32m/* If rel has parents, shoudn't drop NOT NULL if parent has the same */[m
[32m+[m	[32mparentlist = get_superclasses(RelationGetRelid(rel));[m
[32m+[m	[32mforeach(parentscan, parentlist) {[m
[32m+[m		[32mOid			parentId = lfirst_oid(parentscan);[m
[32m+[m		[32mRelation	parent = heap_open(parentId, AccessShareLock);[m
[32m+[m		[32mTupleDesc	tupDesc = RelationGetDescr(parent);[m
[32m+[m		[32mAttrNumber	parent_attnum;[m
[32m+[m
[32m+[m		[32mparent_attnum = get_attnum(parentId, colName);[m
[32m+[m		[32mif (parent_attnum != InvalidAttrNumber &&[m
[32m+[m			[32mTupleDescAttr(tupDesc, parent_attnum - 1)->attnotnull)[m
[32m+[m			[32mereport(ERROR,[m
[32m+[m					[32m(errcode(ERRCODE_INVALID_TABLE_DEFINITION),[m
[32m+[m					[32m errmsg("column \"%s\" is marked NOT NULL in parent table",[m
[32m+[m							[32mcolName)));[m
[32m+[m		[32mheap_close(parent, AccessShareLock);[m
[32m+[m	[32m}[m
[32m+[m
 	/*[m
 	 * Okay, actually perform the catalog change ... if needed[m
 	 */[m
[1mdiff --git a/src/include/catalog/pg_inherits_fn.h b/src/include/catalog/pg_inherits_fn.h[m
[1mindex 7743388899..291861b846 100644[m
[1m--- a/src/include/catalog/pg_inherits_fn.h[m
[1m+++ b/src/include/catalog/pg_inherits_fn.h[m
[36m@@ -20,6 +20,7 @@[m
 extern List *find_inheritance_children(Oid parentrelId, LOCKMODE lockmode);[m
 extern List *find_all_inheritors(Oid parentrelId, LOCKMODE lockmode,[m
 					List **parents);[m
[32m+[m[32mextern List *get_superclasses(Oid relationId);[m
 extern bool has_subclass(Oid relationId);[m
 extern bool has_superclass(Oid relationId);[m
 extern bool typeInheritsFrom(Oid subclassTypeId, Oid superclassTypeId);[m
