Convert all to CLT if a partition has an external foreign key

support-partitioning-for-citus-local-tables
Ahmet Gedemenli 2021-08-23 12:56:21 +03:00
parent 723db5c8cf
commit a18afc5362
1 changed files with 16 additions and 1 deletions

View File

@ -371,9 +371,24 @@ ExecuteCascadeOperationForRelationIdList(List *relationIdList,
case CASCADE_FKEY_ADD_LOCAL_TABLE_TO_METADATA: case CASCADE_FKEY_ADD_LOCAL_TABLE_TO_METADATA:
{ {
if (!IsCitusTable(relationId)) if (!IsCitusTable(relationId))
{
/*
* 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); CreateCitusLocalTable(relationId, cascadeViaForeignKeys);
} }
}
break; break;
} }