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

@ -372,7 +372,22 @@ ExecuteCascadeOperationForRelationIdList(List *relationIdList,
{ {
if (!IsCitusTable(relationId)) 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; break;