diff --git a/src/backend/distributed/commands/cascade_table_operation_for_connected_relations.c b/src/backend/distributed/commands/cascade_table_operation_for_connected_relations.c index 2ecb9149a..4ebc1e51f 100644 --- a/src/backend/distributed/commands/cascade_table_operation_for_connected_relations.c +++ b/src/backend/distributed/commands/cascade_table_operation_for_connected_relations.c @@ -372,7 +372,22 @@ ExecuteCascadeOperationForRelationIdList(List *relationIdList, { if (!IsCitusTable(relationId)) { - CreateCitusLocalTable(relationId, cascadeViaForeignKeys); + /* + * If it's a partition, we want whole partitioned table to become a + * Citus Local Table. For that, we start conversion from the parent. + */ + if (PartitionTable(relationId)) + { + Oid parentOid = PartitionParentOid(relationId); + if (OidIsValid(parentOid) && !IsCitusTable(parentOid)) + { + CreateCitusLocalTable(parentOid, cascadeViaForeignKeys); + } + } + else + { + CreateCitusLocalTable(relationId, cascadeViaForeignKeys); + } } break;