From a18afc5362a8c6011ac406e0150a78b8fee09d49 Mon Sep 17 00:00:00 2001 From: Ahmet Gedemenli Date: Mon, 23 Aug 2021 12:56:21 +0300 Subject: [PATCH] Convert all to CLT if a partition has an external foreign key --- ...de_table_operation_for_connected_relations.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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;