From ac7bccd847a7211b0e4b8bdd672817029d20db31 Mon Sep 17 00:00:00 2001 From: Onur Tirtir Date: Wed, 13 Jan 2021 10:58:48 +0300 Subject: [PATCH] Skip citus tables for CreateCitusLocalTable(cascadeViaFKeys) --- ...scade_table_operation_for_connected_relations.c | 14 +++++++++++++- 1 file changed, 13 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 2b5c4cb15..97cfbb0c8 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 @@ -369,7 +369,19 @@ ExecuteCascadeOperationForRelationIdList(List *relationIdList, case CASCADE_FKEY_CREATE_CITUS_LOCAL_TABLE: { - CreateCitusLocalTable(relationId, cascadeViaForeignKeys); + if (!IsCitusTable(relationId)) + { + /* + * Normally, we wouldn't expect a postgres table connected + * to a citus local table via a foreign keys graph. But now + * this is possible as we allow foreign keys from postgres + * tables to reference tables when coordinator is not added + * to metadata. So instead of erroring out, we skip citus + * tables here. + */ + CreateCitusLocalTable(relationId, cascadeViaForeignKeys); + } + break; }