diff --git a/src/backend/distributed/Makefile b/src/backend/distributed/Makefile index 82e11cd11..d530080d7 100644 --- a/src/backend/distributed/Makefile +++ b/src/backend/distributed/Makefile @@ -16,7 +16,7 @@ generated_sql_files = $(patsubst %,$(citus_abs_srcdir)/build/%,$(template_sql_fi DATA_built = $(generated_sql_files) # directories with source files -SUBDIRS = . commands connection ddl deparser executor master metadata planner progress relay safeclib test transaction utils worker +SUBDIRS = . commands connection ddl deparser executor metadata operations planner progress relay safeclib test transaction utils worker # Symlinks are not copied over to the build directory if a separete build # directory is used during configure (such as on CI) diff --git a/src/backend/distributed/commands/call.c b/src/backend/distributed/commands/call.c index 477d13caf..e4080cb0c 100644 --- a/src/backend/distributed/commands/call.c +++ b/src/backend/distributed/commands/call.c @@ -21,7 +21,7 @@ #include "distributed/commands/utility_hook.h" #include "distributed/connection_management.h" #include "distributed/deparse_shard_query.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata_cache.h" #include "distributed/multi_executor.h" #include "distributed/multi_physical_planner.h" diff --git a/src/backend/distributed/commands/collation.c b/src/backend/distributed/commands/collation.c index e1b54b1d0..3c265d170 100644 --- a/src/backend/distributed/commands/collation.c +++ b/src/backend/distributed/commands/collation.c @@ -18,7 +18,7 @@ #include "distributed/commands.h" #include "distributed/deparser.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata/distobject.h" #include "distributed/metadata_sync.h" #include "distributed/multi_executor.h" diff --git a/src/backend/distributed/commands/create_distributed_table.c b/src/backend/distributed/commands/create_distributed_table.c index 6b19ec636..ce20f3fd4 100644 --- a/src/backend/distributed/commands/create_distributed_table.c +++ b/src/backend/distributed/commands/create_distributed_table.c @@ -40,8 +40,8 @@ #include "distributed/commands.h" #include "distributed/distribution_column.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "distributed/multi_executor.h" diff --git a/src/backend/distributed/commands/drop_distributed_table.c b/src/backend/distributed/commands/drop_distributed_table.c index 374b7cb9f..ae6316540 100644 --- a/src/backend/distributed/commands/drop_distributed_table.c +++ b/src/backend/distributed/commands/drop_distributed_table.c @@ -12,8 +12,8 @@ #include "miscadmin.h" #include "distributed/commands/utility_hook.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_sync.h" #include "distributed/worker_transaction.h" #include "utils/builtins.h" diff --git a/src/backend/distributed/commands/extension.c b/src/backend/distributed/commands/extension.c index 2b5734150..591a81fa5 100644 --- a/src/backend/distributed/commands/extension.c +++ b/src/backend/distributed/commands/extension.c @@ -19,7 +19,7 @@ #include "distributed/commands/utility_hook.h" #include "distributed/deparser.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_sync.h" #include "distributed/metadata/dependency.h" #include "distributed/metadata/distobject.h" diff --git a/src/backend/distributed/commands/foreign_constraint.c b/src/backend/distributed/commands/foreign_constraint.c index 4ace22c89..6e7b1eb69 100644 --- a/src/backend/distributed/commands/foreign_constraint.c +++ b/src/backend/distributed/commands/foreign_constraint.c @@ -24,7 +24,7 @@ #include "distributed/colocation_utils.h" #include "distributed/commands.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/multi_join_order.h" #include "distributed/namespace_utils.h" #include "distributed/reference_table_utils.h" diff --git a/src/backend/distributed/commands/function.c b/src/backend/distributed/commands/function.c index b9a06f5b8..38daa8bee 100644 --- a/src/backend/distributed/commands/function.c +++ b/src/backend/distributed/commands/function.c @@ -39,8 +39,8 @@ #include "distributed/deparser.h" #include "distributed/listutils.h" #include "distributed/maintenanced.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata/distobject.h" #include "distributed/metadata/pg_dist_object.h" #include "distributed/metadata_sync.h" diff --git a/src/backend/distributed/commands/index.c b/src/backend/distributed/commands/index.c index cecf325a0..3e32ac4e7 100644 --- a/src/backend/distributed/commands/index.c +++ b/src/backend/distributed/commands/index.c @@ -27,7 +27,7 @@ #include "distributed/deparse_shard_query.h" #include "distributed/distributed_planner.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/multi_physical_planner.h" #include "distributed/resource_lock.h" diff --git a/src/backend/distributed/commands/multi_copy.c b/src/backend/distributed/commands/multi_copy.c index 00f811824..e2a3491c4 100644 --- a/src/backend/distributed/commands/multi_copy.c +++ b/src/backend/distributed/commands/multi_copy.c @@ -73,7 +73,7 @@ #include "distributed/intermediate_results.h" #include "distributed/local_executor.h" #include "distributed/log_utils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/multi_partitioning_utils.h" #include "distributed/multi_physical_planner.h" diff --git a/src/backend/distributed/commands/role.c b/src/backend/distributed/commands/role.c index d8bc75eed..c6ec3d473 100644 --- a/src/backend/distributed/commands/role.c +++ b/src/backend/distributed/commands/role.c @@ -30,7 +30,7 @@ #include "distributed/commands/utility_hook.h" #include "distributed/deparser.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata/distobject.h" #include "distributed/metadata_sync.h" #include "distributed/worker_transaction.h" diff --git a/src/backend/distributed/commands/table.c b/src/backend/distributed/commands/table.c index f8f397b47..6c9fec88d 100644 --- a/src/backend/distributed/commands/table.c +++ b/src/backend/distributed/commands/table.c @@ -25,7 +25,7 @@ #include "distributed/deparser.h" #include "distributed/deparse_shard_query.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_sync.h" #include "distributed/multi_executor.h" #include "distributed/multi_partitioning_utils.h" diff --git a/src/backend/distributed/commands/truncate.c b/src/backend/distributed/commands/truncate.c index d6cb6118c..a3f75520f 100644 --- a/src/backend/distributed/commands/truncate.c +++ b/src/backend/distributed/commands/truncate.c @@ -9,12 +9,20 @@ */ #include "postgres.h" +#include "miscadmin.h" #include "catalog/namespace.h" #include "catalog/pg_class.h" +#include "commands/tablecmds.h" +#include "commands/trigger.h" +#include "distributed/adaptive_executor.h" #include "distributed/citus_ruleutils.h" #include "distributed/commands.h" +#include "distributed/commands/utility_hook.h" +#include "distributed/coordinator_protocol.h" +#include "distributed/deparse_shard_query.h" #include "distributed/distributed_planner.h" +#include "distributed/foreign_key_relationship.h" #include "distributed/listutils.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" @@ -27,6 +35,7 @@ #include "storage/lmgr.h" #include "utils/builtins.h" #include "utils/lsyscache.h" +#include "utils/regproc.h" #include "utils/rel.h" @@ -39,6 +48,192 @@ static void ExecuteTruncateStmtSequentialIfNecessary(TruncateStmt *command); static void EnsurePartitionTableNotReplicatedForTruncate(TruncateStmt *truncateStatement); static void LockTruncatedRelationMetadataInWorkers(TruncateStmt *truncateStatement); static void AcquireDistributedLockOnRelations(List *relationIdList, LOCKMODE lockMode); +static List * TruncateTaskList(Oid relationId); + + +/* exports for SQL callable functions */ +PG_FUNCTION_INFO_V1(citus_truncate_trigger); +PG_FUNCTION_INFO_V1(truncate_local_data_after_distributing_table); + +void EnsureLocalTableCanBeTruncated(Oid relationId); + + +/* + * citus_truncate_trigger is called as a trigger when a distributed + * table is truncated. + */ +Datum +citus_truncate_trigger(PG_FUNCTION_ARGS) +{ + if (!CALLED_AS_TRIGGER(fcinfo)) + { + ereport(ERROR, (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), + errmsg("must be called as trigger"))); + } + + TriggerData *triggerData = (TriggerData *) fcinfo->context; + Relation truncatedRelation = triggerData->tg_relation; + Oid relationId = RelationGetRelid(truncatedRelation); + char partitionMethod = PartitionMethod(relationId); + + if (!EnableDDLPropagation) + { + PG_RETURN_DATUM(PointerGetDatum(NULL)); + } + + if (partitionMethod == DISTRIBUTE_BY_APPEND) + { + Oid schemaId = get_rel_namespace(relationId); + char *schemaName = get_namespace_name(schemaId); + char *relationName = get_rel_name(relationId); + + DirectFunctionCall3(master_drop_all_shards, + ObjectIdGetDatum(relationId), + CStringGetTextDatum(relationName), + CStringGetTextDatum(schemaName)); + } + else + { + List *taskList = TruncateTaskList(relationId); + + /* + * If it is a local placement of a distributed table or a reference table, + * then execute TRUNCATE command locally. + */ + bool localExecutionSupported = true; + ExecuteUtilityTaskList(taskList, localExecutionSupported); + } + + PG_RETURN_DATUM(PointerGetDatum(NULL)); +} + + +/* + * TruncateTaskList returns a list of tasks to execute a TRUNCATE on a + * distributed table. This is handled separately from other DDL commands + * because we handle it via the TRUNCATE trigger, which is called whenever + * a truncate cascades. + */ +static List * +TruncateTaskList(Oid relationId) +{ + /* resulting task list */ + List *taskList = NIL; + + /* enumerate the tasks when putting them to the taskList */ + int taskId = 1; + + Oid schemaId = get_rel_namespace(relationId); + char *schemaName = get_namespace_name(schemaId); + char *relationName = get_rel_name(relationId); + + List *shardIntervalList = LoadShardIntervalList(relationId); + + /* lock metadata before getting placement lists */ + LockShardListMetadata(shardIntervalList, ShareLock); + + ShardInterval *shardInterval = NULL; + foreach_ptr(shardInterval, shardIntervalList) + { + uint64 shardId = shardInterval->shardId; + char *shardRelationName = pstrdup(relationName); + + /* build shard relation name */ + AppendShardIdToName(&shardRelationName, shardId); + + char *quotedShardName = quote_qualified_identifier(schemaName, shardRelationName); + + StringInfo shardQueryString = makeStringInfo(); + appendStringInfo(shardQueryString, "TRUNCATE TABLE %s CASCADE", quotedShardName); + + Task *task = CitusMakeNode(Task); + task->jobId = INVALID_JOB_ID; + task->taskId = taskId++; + task->taskType = DDL_TASK; + SetTaskQueryString(task, shardQueryString->data); + task->dependentTaskList = NULL; + task->replicationModel = REPLICATION_MODEL_INVALID; + task->anchorShardId = shardId; + task->taskPlacementList = ActiveShardPlacementList(shardId); + + taskList = lappend(taskList, task); + } + + return taskList; +} + + +/* + * truncate_local_data_after_distributing_table truncates the local records of a distributed table. + * + * The main advantage of this function is to truncate all local records after creating a + * distributed table, and prevent constraints from failing due to outdated local records. + */ +Datum +truncate_local_data_after_distributing_table(PG_FUNCTION_ARGS) +{ + Oid relationId = PG_GETARG_OID(0); + + CheckCitusVersion(ERROR); + EnsureCoordinator(); + EnsureLocalTableCanBeTruncated(relationId); + + TruncateStmt *truncateStmt = makeNode(TruncateStmt); + + char *relationName = generate_qualified_relation_name(relationId); + List *names = stringToQualifiedNameList(relationName); + truncateStmt->relations = list_make1(makeRangeVarFromNameList(names)); + truncateStmt->restart_seqs = false; + truncateStmt->behavior = DROP_CASCADE; + + set_config_option("citus.enable_ddl_propagation", "false", + (superuser() ? PGC_SUSET : PGC_USERSET), PGC_S_SESSION, + GUC_ACTION_LOCAL, true, 0, false); + ExecuteTruncate(truncateStmt); + set_config_option("citus.enable_ddl_propagation", "true", + (superuser() ? PGC_SUSET : PGC_USERSET), PGC_S_SESSION, + GUC_ACTION_LOCAL, true, 0, false); + + PG_RETURN_VOID(); +} + + +/* + * EnsureLocalTableCanBeTruncated performs the necessary checks to make sure it + * is safe to truncate the local table of a distributed table + */ +void +EnsureLocalTableCanBeTruncated(Oid relationId) +{ + /* error out if the relation is not a distributed table */ + if (!IsCitusTable(relationId)) + { + ereport(ERROR, (errmsg("supplied parameter is not a distributed relation"), + errdetail("This UDF only truncates local records of distributed " + "tables."))); + } + + /* make sure there are no foreign key references from a local table */ + SetForeignConstraintRelationshipGraphInvalid(); + List *referencingRelationList = ReferencingRelationIdList(relationId); + + Oid referencingRelation = InvalidOid; + foreach_oid(referencingRelation, referencingRelationList) + { + /* we do not truncate a table if there is a local table referencing it */ + if (!IsCitusTable(referencingRelation)) + { + char *referencedRelationName = get_rel_name(relationId); + char *referencingRelationName = get_rel_name(referencingRelation); + + ereport(ERROR, (errmsg("cannot truncate a table referenced in a " + "foreign key constraint by a local table"), + errdetail("Table \"%s\" references \"%s\"", + referencingRelationName, + referencedRelationName))); + } + } +} /* diff --git a/src/backend/distributed/commands/utility_hook.c b/src/backend/distributed/commands/utility_hook.c index 09d555d43..f3ed4d556 100644 --- a/src/backend/distributed/commands/utility_hook.c +++ b/src/backend/distributed/commands/utility_hook.c @@ -47,7 +47,7 @@ #include "distributed/listutils.h" #include "distributed/local_executor.h" #include "distributed/maintenanced.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "distributed/multi_executor.h" diff --git a/src/backend/distributed/connection/placement_connection.c b/src/backend/distributed/connection/placement_connection.c index f7e2c70f7..756f3089a 100644 --- a/src/backend/distributed/connection/placement_connection.c +++ b/src/backend/distributed/connection/placement_connection.c @@ -16,7 +16,7 @@ #include "distributed/connection_management.h" #include "distributed/hash_helpers.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/distributed_planner.h" #include "distributed/multi_partitioning_utils.h" diff --git a/src/backend/distributed/deparser/citus_ruleutils.c b/src/backend/distributed/deparser/citus_ruleutils.c index 59bba0c35..8a64e5fc8 100644 --- a/src/backend/distributed/deparser/citus_ruleutils.c +++ b/src/backend/distributed/deparser/citus_ruleutils.c @@ -39,7 +39,7 @@ #include "distributed/citus_ruleutils.h" #include "distributed/multi_partitioning_utils.h" #include "distributed/relay_utility.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata_cache.h" #include "distributed/version_compat.h" #include "foreign/foreign.h" diff --git a/src/backend/distributed/executor/distributed_intermediate_results.c b/src/backend/distributed/executor/distributed_intermediate_results.c index 84d836919..c4cc3e3c4 100644 --- a/src/backend/distributed/executor/distributed_intermediate_results.c +++ b/src/backend/distributed/executor/distributed_intermediate_results.c @@ -23,7 +23,7 @@ #include "distributed/deparse_shard_query.h" #include "distributed/intermediate_results.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata_cache.h" #include "distributed/multi_executor.h" #include "distributed/multi_physical_planner.h" diff --git a/src/backend/distributed/executor/intermediate_results.c b/src/backend/distributed/executor/intermediate_results.c index d147370e9..3c299da53 100644 --- a/src/backend/distributed/executor/intermediate_results.c +++ b/src/backend/distributed/executor/intermediate_results.c @@ -23,7 +23,7 @@ #include "distributed/error_codes.h" #include "distributed/intermediate_results.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata_cache.h" #include "distributed/multi_client_executor.h" #include "distributed/multi_executor.h" diff --git a/src/backend/distributed/executor/local_executor.c b/src/backend/distributed/executor/local_executor.c index 802a8aac5..fd5bd48c7 100644 --- a/src/backend/distributed/executor/local_executor.c +++ b/src/backend/distributed/executor/local_executor.c @@ -91,7 +91,7 @@ #include "distributed/local_executor.h" #include "distributed/local_plan_cache.h" #include "distributed/multi_executor.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/relation_access_tracking.h" #include "distributed/remote_commands.h" /* to access LogRemoteCommands */ diff --git a/src/backend/distributed/executor/multi_executor.c b/src/backend/distributed/executor/multi_executor.c index c0b645650..8f4e23f8d 100644 --- a/src/backend/distributed/executor/multi_executor.c +++ b/src/backend/distributed/executor/multi_executor.c @@ -24,9 +24,9 @@ #include "distributed/insert_select_executor.h" #include "distributed/insert_select_planner.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/multi_executor.h" -#include "distributed/multi_master_planner.h" +#include "distributed/merge_planner.h" #include "distributed/distributed_planner.h" #include "distributed/multi_router_planner.h" #include "distributed/multi_resowner.h" diff --git a/src/backend/distributed/executor/multi_server_executor.c b/src/backend/distributed/executor/multi_server_executor.c index 77527e4d0..d7b003677 100644 --- a/src/backend/distributed/executor/multi_server_executor.c +++ b/src/backend/distributed/executor/multi_server_executor.c @@ -26,7 +26,7 @@ #include "distributed/multi_physical_planner.h" #include "distributed/multi_resowner.h" #include "distributed/multi_server_executor.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/subplan_execution.h" #include "distributed/worker_protocol.h" #include "utils/lsyscache.h" diff --git a/src/backend/distributed/executor/partitioned_intermediate_results.c b/src/backend/distributed/executor/partitioned_intermediate_results.c index 1c20daddf..781bc0823 100644 --- a/src/backend/distributed/executor/partitioned_intermediate_results.c +++ b/src/backend/distributed/executor/partitioned_intermediate_results.c @@ -20,7 +20,7 @@ #include "catalog/pg_am.h" #include "catalog/pg_type.h" #include "distributed/intermediate_results.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata_cache.h" #include "distributed/multi_executor.h" #include "distributed/pg_dist_shard.h" diff --git a/src/backend/distributed/master/master_truncate.c b/src/backend/distributed/master/master_truncate.c deleted file mode 100644 index fb92d3f11..000000000 --- a/src/backend/distributed/master/master_truncate.c +++ /dev/null @@ -1,221 +0,0 @@ -/*------------------------------------------------------------------------- - * - * master_truncate.c - * - * Routine for truncating local data after a table has been distributed. - * - * Copyright (c) Citus Data, Inc. - * - *------------------------------------------------------------------------- - */ - -#include "postgres.h" -#include "miscadmin.h" - -#include - -#include "commands/tablecmds.h" -#include "commands/trigger.h" -#include "distributed/citus_ruleutils.h" -#include "distributed/adaptive_executor.h" -#include "distributed/commands/utility_hook.h" -#include "distributed/deparse_shard_query.h" -#include "distributed/foreign_key_relationship.h" -#include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" -#include "distributed/multi_executor.h" -#include "distributed/multi_join_order.h" -#include "distributed/pg_dist_partition.h" -#include "distributed/resource_lock.h" -#include "utils/builtins.h" -#include "utils/lsyscache.h" -#include "utils/regproc.h" -#include "utils/rel.h" - -static List * TruncateTaskList(Oid relationId); - - -/* exports for SQL callable functions */ -PG_FUNCTION_INFO_V1(citus_truncate_trigger); -PG_FUNCTION_INFO_V1(truncate_local_data_after_distributing_table); - -void EnsureLocalTableCanBeTruncated(Oid relationId); - - -/* - * citus_truncate_trigger is called as a trigger when a distributed - * table is truncated. - */ -Datum -citus_truncate_trigger(PG_FUNCTION_ARGS) -{ - if (!CALLED_AS_TRIGGER(fcinfo)) - { - ereport(ERROR, (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), - errmsg("must be called as trigger"))); - } - - TriggerData *triggerData = (TriggerData *) fcinfo->context; - Relation truncatedRelation = triggerData->tg_relation; - Oid relationId = RelationGetRelid(truncatedRelation); - char partitionMethod = PartitionMethod(relationId); - - if (!EnableDDLPropagation) - { - PG_RETURN_DATUM(PointerGetDatum(NULL)); - } - - if (partitionMethod == DISTRIBUTE_BY_APPEND) - { - Oid schemaId = get_rel_namespace(relationId); - char *schemaName = get_namespace_name(schemaId); - char *relationName = get_rel_name(relationId); - - DirectFunctionCall3(master_drop_all_shards, - ObjectIdGetDatum(relationId), - CStringGetTextDatum(relationName), - CStringGetTextDatum(schemaName)); - } - else - { - List *taskList = TruncateTaskList(relationId); - - /* - * If it is a local placement of a distributed table or a reference table, - * then execute TRUNCATE command locally. - */ - bool localExecutionSupported = true; - ExecuteUtilityTaskList(taskList, localExecutionSupported); - } - - PG_RETURN_DATUM(PointerGetDatum(NULL)); -} - - -/* - * TruncateTaskList returns a list of tasks to execute a TRUNCATE on a - * distributed table. This is handled separately from other DDL commands - * because we handle it via the TRUNCATE trigger, which is called whenever - * a truncate cascades. - */ -static List * -TruncateTaskList(Oid relationId) -{ - /* resulting task list */ - List *taskList = NIL; - - /* enumerate the tasks when putting them to the taskList */ - int taskId = 1; - - Oid schemaId = get_rel_namespace(relationId); - char *schemaName = get_namespace_name(schemaId); - char *relationName = get_rel_name(relationId); - - List *shardIntervalList = LoadShardIntervalList(relationId); - - /* lock metadata before getting placement lists */ - LockShardListMetadata(shardIntervalList, ShareLock); - - ShardInterval *shardInterval = NULL; - foreach_ptr(shardInterval, shardIntervalList) - { - uint64 shardId = shardInterval->shardId; - char *shardRelationName = pstrdup(relationName); - - /* build shard relation name */ - AppendShardIdToName(&shardRelationName, shardId); - - char *quotedShardName = quote_qualified_identifier(schemaName, shardRelationName); - - StringInfo shardQueryString = makeStringInfo(); - appendStringInfo(shardQueryString, "TRUNCATE TABLE %s CASCADE", quotedShardName); - - Task *task = CitusMakeNode(Task); - task->jobId = INVALID_JOB_ID; - task->taskId = taskId++; - task->taskType = DDL_TASK; - SetTaskQueryString(task, shardQueryString->data); - task->dependentTaskList = NULL; - task->replicationModel = REPLICATION_MODEL_INVALID; - task->anchorShardId = shardId; - task->taskPlacementList = ActiveShardPlacementList(shardId); - - taskList = lappend(taskList, task); - } - - return taskList; -} - - -/* - * truncate_local_data_after_distributing_table truncates the local records of a distributed table. - * - * The main advantage of this function is to truncate all local records after creating a - * distributed table, and prevent constraints from failing due to outdated local records. - */ -Datum -truncate_local_data_after_distributing_table(PG_FUNCTION_ARGS) -{ - Oid relationId = PG_GETARG_OID(0); - - CheckCitusVersion(ERROR); - EnsureCoordinator(); - EnsureLocalTableCanBeTruncated(relationId); - - TruncateStmt *truncateStmt = makeNode(TruncateStmt); - - char *relationName = generate_qualified_relation_name(relationId); - List *names = stringToQualifiedNameList(relationName); - truncateStmt->relations = list_make1(makeRangeVarFromNameList(names)); - truncateStmt->restart_seqs = false; - truncateStmt->behavior = DROP_CASCADE; - - set_config_option("citus.enable_ddl_propagation", "false", - (superuser() ? PGC_SUSET : PGC_USERSET), PGC_S_SESSION, - GUC_ACTION_LOCAL, true, 0, false); - ExecuteTruncate(truncateStmt); - set_config_option("citus.enable_ddl_propagation", "true", - (superuser() ? PGC_SUSET : PGC_USERSET), PGC_S_SESSION, - GUC_ACTION_LOCAL, true, 0, false); - - PG_RETURN_VOID(); -} - - -/* - * EnsureLocalTableCanBeTruncated performs the necessary checks to make sure it - * is safe to truncate the local table of a distributed table - */ -void -EnsureLocalTableCanBeTruncated(Oid relationId) -{ - /* error out if the relation is not a distributed table */ - if (!IsCitusTable(relationId)) - { - ereport(ERROR, (errmsg("supplied parameter is not a distributed relation"), - errdetail("This UDF only truncates local records of distributed " - "tables."))); - } - - /* make sure there are no foreign key references from a local table */ - SetForeignConstraintRelationshipGraphInvalid(); - List *referencingRelationList = ReferencingRelationIdList(relationId); - - Oid referencingRelation = InvalidOid; - foreach_oid(referencingRelation, referencingRelationList) - { - /* we do not truncate a table if there is a local table referencing it */ - if (!IsCitusTable(referencingRelation)) - { - char *referencedRelationName = get_rel_name(relationId); - char *referencingRelationName = get_rel_name(referencingRelation); - - ereport(ERROR, (errmsg("cannot truncate a table referenced in a " - "foreign key constraint by a local table"), - errdetail("Table \"%s\" references \"%s\"", - referencingRelationName, - referencedRelationName))); - } - } -} diff --git a/src/backend/distributed/metadata/metadata_cache.c b/src/backend/distributed/metadata/metadata_cache.c index f7ba48911..af8235589 100644 --- a/src/backend/distributed/metadata/metadata_cache.c +++ b/src/backend/distributed/metadata/metadata_cache.c @@ -37,7 +37,7 @@ #include "distributed/function_utils.h" #include "distributed/foreign_key_relationship.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata/pg_dist_object.h" #include "distributed/metadata_cache.h" #include "distributed/multi_executor.h" diff --git a/src/backend/distributed/metadata/metadata_sync.c b/src/backend/distributed/metadata/metadata_sync.c index 4c8d5526f..4d002bdc3 100644 --- a/src/backend/distributed/metadata/metadata_sync.c +++ b/src/backend/distributed/metadata/metadata_sync.c @@ -32,8 +32,8 @@ #include "distributed/deparser.h" #include "distributed/distribution_column.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "distributed/multi_join_order.h" diff --git a/src/backend/distributed/master/master_metadata_utility.c b/src/backend/distributed/metadata/metadata_utility.c similarity index 99% rename from src/backend/distributed/master/master_metadata_utility.c rename to src/backend/distributed/metadata/metadata_utility.c index 528d96e7e..c5b4e0b7a 100644 --- a/src/backend/distributed/master/master_metadata_utility.c +++ b/src/backend/distributed/metadata/metadata_utility.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * master_metadata_utility.c + * metadata_utility.c * Routines for reading and modifying master node's metadata. * * Copyright (c) Citus Data, Inc. @@ -35,8 +35,8 @@ #include "distributed/citus_nodes.h" #include "distributed/citus_safe_lib.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/multi_join_order.h" #include "distributed/multi_logical_optimizer.h" @@ -317,7 +317,7 @@ ShardIntervalsOnWorkerGroup(WorkerNode *workerNode, Oid relationId) * size of multiple tables. Note that, different size functions supported by PG * are also supported by this function changing the size query given as the * last parameter to function. Format of sizeQuery is pg_*_size(%s). Examples - * of it can be found in the master_protocol.h + * of it can be found in the coordinator_protocol.h */ StringInfo GenerateSizeQueryOnMultiplePlacements(List *shardIntervalList, char *sizeQuery) diff --git a/src/backend/distributed/metadata/node_metadata.c b/src/backend/distributed/metadata/node_metadata.c index bea601e5a..ed50eabda 100644 --- a/src/backend/distributed/metadata/node_metadata.c +++ b/src/backend/distributed/metadata/node_metadata.c @@ -28,8 +28,8 @@ #include "distributed/commands/utility_hook.h" #include "distributed/connection_management.h" #include "distributed/maintenanced.h" -#include "distributed/master_protocol.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/coordinator_protocol.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata/distobject.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" diff --git a/src/backend/distributed/master/citus_create_restore_point.c b/src/backend/distributed/operations/citus_create_restore_point.c similarity index 99% rename from src/backend/distributed/master/citus_create_restore_point.c rename to src/backend/distributed/operations/citus_create_restore_point.c index 4b3130b93..a9ededfe1 100644 --- a/src/backend/distributed/master/citus_create_restore_point.c +++ b/src/backend/distributed/operations/citus_create_restore_point.c @@ -17,7 +17,7 @@ #include "catalog/pg_type.h" #include "distributed/connection_management.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata_cache.h" #include "distributed/remote_commands.h" #include "nodes/pg_list.h" diff --git a/src/backend/distributed/master/master_citus_tools.c b/src/backend/distributed/operations/citus_tools.c similarity index 99% rename from src/backend/distributed/master/master_citus_tools.c rename to src/backend/distributed/operations/citus_tools.c index 83829547d..fb6d6d65e 100644 --- a/src/backend/distributed/master/master_citus_tools.c +++ b/src/backend/distributed/operations/citus_tools.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * master_citus_tools.c + * citus_tools.c * UDF to run multi shard/worker queries * * This file contains functions to run commands on other worker/shards. diff --git a/src/backend/distributed/master/master_create_shards.c b/src/backend/distributed/operations/create_shards.c similarity index 99% rename from src/backend/distributed/master/master_create_shards.c rename to src/backend/distributed/operations/create_shards.c index ce2239c5a..5bbdc50ef 100644 --- a/src/backend/distributed/master/master_create_shards.c +++ b/src/backend/distributed/operations/create_shards.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * master_create_shards.c + * create_shards.c * * This file contains functions to distribute a table by creating shards for it * across a set of worker nodes. @@ -26,8 +26,8 @@ #include "catalog/namespace.h" #include "catalog/pg_class.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/multi_join_order.h" #include "distributed/multi_executor.h" diff --git a/src/backend/distributed/master/master_delete_protocol.c b/src/backend/distributed/operations/delete_protocol.c similarity index 99% rename from src/backend/distributed/master/master_delete_protocol.c rename to src/backend/distributed/operations/delete_protocol.c index 6afcf1098..a70d5506a 100644 --- a/src/backend/distributed/master/master_delete_protocol.c +++ b/src/backend/distributed/operations/delete_protocol.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * master_delete_protocol.c + * delete_protocol.c * * Routine for deleting shards in the distributed cluster. This function takes * in a delete command and deletes a shard if and only if all rows in the shard @@ -33,7 +33,7 @@ #include "distributed/deparse_shard_query.h" #include "distributed/listutils.h" #include "distributed/local_executor.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_sync.h" #include "distributed/multi_client_executor.h" #include "distributed/multi_join_order.h" diff --git a/src/backend/distributed/master/master_modify_multiple_shards.c b/src/backend/distributed/operations/modify_multiple_shards.c similarity index 96% rename from src/backend/distributed/master/master_modify_multiple_shards.c rename to src/backend/distributed/operations/modify_multiple_shards.c index 84b6b4dfe..62a5cab70 100644 --- a/src/backend/distributed/master/master_modify_multiple_shards.c +++ b/src/backend/distributed/operations/modify_multiple_shards.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * master_modify_multiple_shards.c + * modify_multiple_shards.c * UDF to run multi shard update/delete queries * * This file contains master_modify_multiple_shards function, which takes a update @@ -30,8 +30,8 @@ #include "distributed/citus_ruleutils.h" #include "distributed/commands.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "distributed/multi_client_executor.h" diff --git a/src/backend/distributed/master/master_node_protocol.c b/src/backend/distributed/operations/node_protocol.c similarity index 99% rename from src/backend/distributed/master/master_node_protocol.c rename to src/backend/distributed/operations/node_protocol.c index 27b196706..e167380d1 100644 --- a/src/backend/distributed/master/master_node_protocol.c +++ b/src/backend/distributed/operations/node_protocol.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * master_node_protocol.c + * node_protocol.c * Routines for requesting information from the master node for creating or * updating shards. * @@ -43,7 +43,7 @@ #include "distributed/citus_ruleutils.h" #include "distributed/commands.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "distributed/namespace_utils.h" diff --git a/src/backend/distributed/master/master_repair_shards.c b/src/backend/distributed/operations/repair_shards.c similarity index 99% rename from src/backend/distributed/master/master_repair_shards.c rename to src/backend/distributed/operations/repair_shards.c index 112ed0c9e..3ded564b2 100644 --- a/src/backend/distributed/master/master_repair_shards.c +++ b/src/backend/distributed/operations/repair_shards.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * master_repair_shards.c + * repair_shards.c * * This file contains functions to repair unhealthy shard placements using data * from healthy ones. @@ -23,7 +23,7 @@ #include "distributed/connection_management.h" #include "distributed/distributed_planner.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "distributed/multi_join_order.h" diff --git a/src/backend/distributed/master/shard_rebalancer.c b/src/backend/distributed/operations/shard_rebalancer.c similarity index 100% rename from src/backend/distributed/master/shard_rebalancer.c rename to src/backend/distributed/operations/shard_rebalancer.c diff --git a/src/backend/distributed/master/master_split_shards.c b/src/backend/distributed/operations/split_shards.c similarity index 97% rename from src/backend/distributed/master/master_split_shards.c rename to src/backend/distributed/operations/split_shards.c index b5aa7f2b9..80d3f930f 100644 --- a/src/backend/distributed/master/master_split_shards.c +++ b/src/backend/distributed/operations/split_shards.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * master_split_shards.c + * split_shards.c * * This file contains functions to split a shard according to a given * distribution column value. @@ -16,7 +16,7 @@ #include "catalog/pg_class.h" #include "distributed/colocation_utils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "distributed/multi_join_order.h" diff --git a/src/backend/distributed/master/master_stage_protocol.c b/src/backend/distributed/operations/stage_protocol.c similarity index 99% rename from src/backend/distributed/master/master_stage_protocol.c rename to src/backend/distributed/operations/stage_protocol.c index d71cc00d0..c551817a1 100644 --- a/src/backend/distributed/master/master_stage_protocol.c +++ b/src/backend/distributed/operations/stage_protocol.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * master_stage_protocol.c + * stage_protocol.c * * Routines for staging PostgreSQL table data as shards into the distributed * cluster. These user-defined functions are similar to the psql-side \stage @@ -35,8 +35,8 @@ #include "distributed/listutils.h" #include "distributed/multi_client_executor.h" #include "distributed/multi_executor.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/multi_join_order.h" #include "distributed/multi_partitioning_utils.h" diff --git a/src/backend/distributed/master/worker_node_manager.c b/src/backend/distributed/operations/worker_node_manager.c similarity index 100% rename from src/backend/distributed/master/worker_node_manager.c rename to src/backend/distributed/operations/worker_node_manager.c diff --git a/src/backend/distributed/planner/distributed_planner.c b/src/backend/distributed/planner/distributed_planner.c index f1a67759a..21a584e10 100644 --- a/src/backend/distributed/planner/distributed_planner.c +++ b/src/backend/distributed/planner/distributed_planner.c @@ -29,7 +29,7 @@ #include "distributed/intermediate_result_pruning.h" #include "distributed/intermediate_results.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/multi_executor.h" #include "distributed/distributed_planner.h" @@ -38,7 +38,7 @@ #include "distributed/multi_logical_planner.h" #include "distributed/multi_partitioning_utils.h" #include "distributed/multi_physical_planner.h" -#include "distributed/multi_master_planner.h" +#include "distributed/merge_planner.h" #include "distributed/multi_router_planner.h" #include "distributed/query_utils.h" #include "distributed/recursive_planning.h" diff --git a/src/backend/distributed/planner/function_call_delegation.c b/src/backend/distributed/planner/function_call_delegation.c index dbd192109..af6fd41e7 100644 --- a/src/backend/distributed/planner/function_call_delegation.c +++ b/src/backend/distributed/planner/function_call_delegation.c @@ -27,8 +27,8 @@ #include "distributed/function_call_delegation.h" #include "distributed/insert_select_planner.h" #include "distributed/insert_select_executor.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/multi_executor.h" #include "distributed/multi_physical_planner.h" diff --git a/src/backend/distributed/planner/multi_master_planner.c b/src/backend/distributed/planner/merge_planner.c similarity index 99% rename from src/backend/distributed/planner/multi_master_planner.c rename to src/backend/distributed/planner/merge_planner.c index 22baee4fd..54b9059de 100644 --- a/src/backend/distributed/planner/multi_master_planner.c +++ b/src/backend/distributed/planner/merge_planner.c @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * multi_master_planner.c + * merge_planner.c * Routines for building create table and select into table statements on the * master node. * @@ -20,7 +20,7 @@ #include "distributed/insert_select_planner.h" #include "distributed/listutils.h" #include "distributed/metadata_cache.h" -#include "distributed/multi_master_planner.h" +#include "distributed/merge_planner.h" #include "distributed/multi_physical_planner.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" diff --git a/src/backend/distributed/planner/multi_explain.c b/src/backend/distributed/planner/multi_explain.c index 38b3d4726..80b4c08de 100644 --- a/src/backend/distributed/planner/multi_explain.c +++ b/src/backend/distributed/planner/multi_explain.c @@ -34,7 +34,7 @@ #include "distributed/multi_explain.h" #include "distributed/multi_logical_optimizer.h" #include "distributed/multi_logical_planner.h" -#include "distributed/multi_master_planner.h" +#include "distributed/merge_planner.h" #include "distributed/multi_physical_planner.h" #include "distributed/multi_router_planner.h" #include "distributed/distributed_planner.h" diff --git a/src/backend/distributed/planner/multi_physical_planner.c b/src/backend/distributed/planner/multi_physical_planner.c index 36d50a3c5..27bd07a8a 100644 --- a/src/backend/distributed/planner/multi_physical_planner.c +++ b/src/backend/distributed/planner/multi_physical_planner.c @@ -39,7 +39,7 @@ #include "distributed/citus_ruleutils.h" #include "distributed/colocation_utils.h" #include "distributed/deparse_shard_query.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/multi_router_planner.h" #include "distributed/multi_join_order.h" diff --git a/src/backend/distributed/planner/multi_router_planner.c b/src/backend/distributed/planner/multi_router_planner.c index 48fd747de..5e6c12433 100644 --- a/src/backend/distributed/planner/multi_router_planner.c +++ b/src/backend/distributed/planner/multi_router_planner.c @@ -30,8 +30,8 @@ #include "distributed/log_utils.h" #include "distributed/insert_select_planner.h" #include "distributed/intermediate_result_pruning.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/multi_executor.h" #include "distributed/multi_join_order.h" diff --git a/src/backend/distributed/planner/postgres_planning_functions.c b/src/backend/distributed/planner/postgres_planning_functions.c index e37ca4be0..b22742565 100644 --- a/src/backend/distributed/planner/postgres_planning_functions.c +++ b/src/backend/distributed/planner/postgres_planning_functions.c @@ -15,7 +15,7 @@ #include "distributed/pg_version_constants.h" -#include "distributed/multi_master_planner.h" +#include "distributed/merge_planner.h" #include "nodes/plannodes.h" #if PG_VERSION_NUM >= PG_VERSION_12 #include "nodes/nodeFuncs.h" diff --git a/src/backend/distributed/shared_library_init.c b/src/backend/distributed/shared_library_init.c index b353d21a6..ee2570061 100644 --- a/src/backend/distributed/shared_library_init.c +++ b/src/backend/distributed/shared_library_init.c @@ -39,8 +39,8 @@ #include "distributed/intermediate_result_pruning.h" #include "distributed/local_executor.h" #include "distributed/maintenanced.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "distributed/multi_executor.h" @@ -48,7 +48,7 @@ #include "distributed/multi_join_order.h" #include "distributed/multi_logical_optimizer.h" #include "distributed/distributed_planner.h" -#include "distributed/multi_master_planner.h" +#include "distributed/merge_planner.h" #include "distributed/multi_router_planner.h" #include "distributed/multi_server_executor.h" #include "distributed/pg_dist_partition.h" diff --git a/src/backend/distributed/test/deparse_shard_query.c b/src/backend/distributed/test/deparse_shard_query.c index a18dd9408..1961ad52d 100644 --- a/src/backend/distributed/test/deparse_shard_query.c +++ b/src/backend/distributed/test/deparse_shard_query.c @@ -18,7 +18,7 @@ #include "catalog/pg_type.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/citus_ruleutils.h" #include "distributed/insert_select_planner.h" #include "distributed/multi_router_planner.h" diff --git a/src/backend/distributed/test/distribution_metadata.c b/src/backend/distributed/test/distribution_metadata.c index 1904a1c41..0d44a70c3 100644 --- a/src/backend/distributed/test/distribution_metadata.c +++ b/src/backend/distributed/test/distribution_metadata.c @@ -21,8 +21,8 @@ #include "catalog/pg_type.h" #include "distributed/distribution_column.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/multi_join_order.h" #include "distributed/multi_physical_planner.h" diff --git a/src/backend/distributed/test/file_utils.c b/src/backend/distributed/test/file_utils.c index a6576ac55..a92e3fc90 100644 --- a/src/backend/distributed/test/file_utils.c +++ b/src/backend/distributed/test/file_utils.c @@ -2,7 +2,7 @@ #include "distributed/worker_protocol.h" #include "distributed/transmit.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "fmgr.h" #include "lib/stringinfo.h" diff --git a/src/backend/distributed/test/prune_shard_list.c b/src/backend/distributed/test/prune_shard_list.c index 98d19f2be..f5505407b 100644 --- a/src/backend/distributed/test/prune_shard_list.c +++ b/src/backend/distributed/test/prune_shard_list.c @@ -23,7 +23,7 @@ #include "catalog/pg_type.h" #include "distributed/listutils.h" #include "distributed/metadata_cache.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/multi_join_order.h" #include "distributed/multi_physical_planner.h" #include "distributed/resource_lock.h" diff --git a/src/backend/distributed/test/run_from_same_connection.c b/src/backend/distributed/test/run_from_same_connection.c index 9d08a7cb2..06916461a 100644 --- a/src/backend/distributed/test/run_from_same_connection.c +++ b/src/backend/distributed/test/run_from_same_connection.c @@ -19,7 +19,7 @@ #include "distributed/connection_management.h" #include "distributed/function_utils.h" #include "distributed/lock_graph.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/remote_commands.h" #include "distributed/run_from_same_connection.h" diff --git a/src/backend/distributed/transaction/citus_dist_stat_activity.c b/src/backend/distributed/transaction/citus_dist_stat_activity.c index 93302a798..96229f281 100644 --- a/src/backend/distributed/transaction/citus_dist_stat_activity.c +++ b/src/backend/distributed/transaction/citus_dist_stat_activity.c @@ -24,7 +24,7 @@ #include "distributed/connection_management.h" #include "distributed/listutils.h" #include "distributed/lock_graph.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/remote_commands.h" #include "distributed/transaction_identifier.h" diff --git a/src/backend/distributed/utils/citus_outfuncs.c b/src/backend/distributed/utils/citus_outfuncs.c index 68c63cc27..a6d402c20 100644 --- a/src/backend/distributed/utils/citus_outfuncs.c +++ b/src/backend/distributed/utils/citus_outfuncs.c @@ -30,7 +30,7 @@ #include "distributed/multi_physical_planner.h" #include "distributed/distributed_planner.h" #include "distributed/multi_server_executor.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "lib/stringinfo.h" #include "nodes/plannodes.h" #if PG_VERSION_NUM >= PG_VERSION_12 diff --git a/src/backend/distributed/utils/colocation_utils.c b/src/backend/distributed/utils/colocation_utils.c index 4ebb10fb2..7190f1716 100644 --- a/src/backend/distributed/utils/colocation_utils.c +++ b/src/backend/distributed/utils/colocation_utils.c @@ -21,8 +21,8 @@ #include "commands/sequence.h" #include "distributed/colocation_utils.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "distributed/multi_logical_planner.h" diff --git a/src/backend/distributed/utils/maintenanced.c b/src/backend/distributed/utils/maintenanced.c index dad2db602..f3a3edc40 100644 --- a/src/backend/distributed/utils/maintenanced.c +++ b/src/backend/distributed/utils/maintenanced.c @@ -33,7 +33,7 @@ #include "distributed/citus_safe_lib.h" #include "distributed/distributed_deadlock_detection.h" #include "distributed/maintenanced.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "distributed/statistics_collection.h" diff --git a/src/backend/distributed/utils/multi_partitioning_utils.c b/src/backend/distributed/utils/multi_partitioning_utils.c index fdfc7e12a..da4b8df86 100644 --- a/src/backend/distributed/utils/multi_partitioning_utils.c +++ b/src/backend/distributed/utils/multi_partitioning_utils.c @@ -17,8 +17,8 @@ #include "catalog/pg_inherits.h" #include "distributed/citus_ruleutils.h" #include "distributed/colocation_utils.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/multi_partitioning_utils.h" #include "distributed/shardinterval_utils.h" #include "lib/stringinfo.h" diff --git a/src/backend/distributed/utils/reference_table_utils.c b/src/backend/distributed/utils/reference_table_utils.c index cc1ad53c3..ab9ee54cd 100644 --- a/src/backend/distributed/utils/reference_table_utils.c +++ b/src/backend/distributed/utils/reference_table_utils.c @@ -18,8 +18,8 @@ #include "distributed/colocation_utils.h" #include "distributed/commands.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/coordinator_protocol.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "distributed/multi_executor.h" diff --git a/src/backend/distributed/utils/resource_lock.c b/src/backend/distributed/utils/resource_lock.c index 5bdf2e570..603e1ec71 100644 --- a/src/backend/distributed/utils/resource_lock.c +++ b/src/backend/distributed/utils/resource_lock.c @@ -22,8 +22,8 @@ #include "commands/tablecmds.h" #include "distributed/colocation_utils.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "distributed/multi_join_order.h" diff --git a/src/backend/distributed/worker/worker_data_fetch_protocol.c b/src/backend/distributed/worker/worker_data_fetch_protocol.c index d0486f70a..f689c975d 100644 --- a/src/backend/distributed/worker/worker_data_fetch_protocol.c +++ b/src/backend/distributed/worker/worker_data_fetch_protocol.c @@ -31,7 +31,7 @@ #include "distributed/commands/utility_hook.h" #include "distributed/connection_management.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "distributed/multi_client_executor.h" #include "distributed/commands/multi_copy.h" diff --git a/src/backend/distributed/worker/worker_drop_protocol.c b/src/backend/distributed/worker/worker_drop_protocol.c index 8ca056399..925902bca 100644 --- a/src/backend/distributed/worker/worker_drop_protocol.c +++ b/src/backend/distributed/worker/worker_drop_protocol.c @@ -21,8 +21,8 @@ #include "distributed/citus_ruleutils.h" #include "distributed/distribution_column.h" #include "distributed/listutils.h" -#include "distributed/master_metadata_utility.h" -#include "distributed/master_protocol.h" +#include "distributed/metadata_utility.h" +#include "distributed/coordinator_protocol.h" #include "distributed/metadata_cache.h" #include "foreign/foreign.h" #include "utils/builtins.h" diff --git a/src/backend/distributed/worker/worker_file_access_protocol.c b/src/backend/distributed/worker/worker_file_access_protocol.c index 9bbd5b222..b2a473dea 100644 --- a/src/backend/distributed/worker/worker_file_access_protocol.c +++ b/src/backend/distributed/worker/worker_file_access_protocol.c @@ -16,7 +16,7 @@ #include "commands/defrem.h" #include "distributed/listutils.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/worker_protocol.h" #include "foreign/foreign.h" #include "utils/builtins.h" diff --git a/src/backend/distributed/worker/worker_shard_visibility.c b/src/backend/distributed/worker/worker_shard_visibility.c index 259d4a7e7..78fe44118 100644 --- a/src/backend/distributed/worker/worker_shard_visibility.c +++ b/src/backend/distributed/worker/worker_shard_visibility.c @@ -13,7 +13,7 @@ #include "catalog/namespace.h" #include "catalog/pg_class.h" #include "distributed/metadata_cache.h" -#include "distributed/master_protocol.h" +#include "distributed/coordinator_protocol.h" #include "distributed/worker_protocol.h" #include "distributed/worker_shard_visibility.h" #include "nodes/nodeFuncs.h" diff --git a/src/backend/distributed/worker/worker_truncate_trigger_protocol.c b/src/backend/distributed/worker/worker_truncate_trigger_protocol.c index ba44adfb1..c4149dca2 100644 --- a/src/backend/distributed/worker/worker_truncate_trigger_protocol.c +++ b/src/backend/distributed/worker/worker_truncate_trigger_protocol.c @@ -15,7 +15,7 @@ #include "fmgr.h" #include "distributed/citus_ruleutils.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata_cache.h" #include "distributed/metadata_sync.h" #include "utils/elog.h" diff --git a/src/include/distributed/commands/multi_copy.h b/src/include/distributed/commands/multi_copy.h index 0029d5396..b76037706 100644 --- a/src/include/distributed/commands/multi_copy.h +++ b/src/include/distributed/commands/multi_copy.h @@ -13,7 +13,7 @@ #define MULTI_COPY_H -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata_cache.h" #include "nodes/execnodes.h" #include "nodes/parsenodes.h" diff --git a/src/include/distributed/master_protocol.h b/src/include/distributed/coordinator_protocol.h similarity index 96% rename from src/include/distributed/master_protocol.h rename to src/include/distributed/coordinator_protocol.h index 14743a5c3..04ebc95fe 100644 --- a/src/include/distributed/master_protocol.h +++ b/src/include/distributed/coordinator_protocol.h @@ -1,18 +1,16 @@ /*------------------------------------------------------------------------- * - * master_protocol.h - * Header for shared declarations for access to master node data. These data - * are used to create new shards or update existing ones. + * coordinator_protocol.h + * Header for shared declarations for access to coordinator node data. + * These data are used to create new shards or update existing ones. * * Copyright (c) Citus Data, Inc. * - * $Id$ - * *------------------------------------------------------------------------- */ -#ifndef MASTER_PROTOCOL_H -#define MASTER_PROTOCOL_H +#ifndef COORDINATOR_PROTOCOL_H +#define COORDINATOR_PROTOCOL_H #include "postgres.h" #include "c.h" @@ -21,7 +19,7 @@ #include "distributed/connection_management.h" #include "distributed/shardinterval_utils.h" #include "nodes/pg_list.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" /* @@ -176,4 +174,4 @@ extern ShardPlacement * ForceSearchShardPlacementInList(List *shardPlacementList const char *nodeName, uint32 nodePort); -#endif /* MASTER_PROTOCOL_H */ +#endif /* COORDINATOR_PROTOCOL_H */ diff --git a/src/include/distributed/multi_master_planner.h b/src/include/distributed/merge_planner.h similarity index 85% rename from src/include/distributed/multi_master_planner.h rename to src/include/distributed/merge_planner.h index 27ac3ad80..926d3200b 100644 --- a/src/include/distributed/multi_master_planner.h +++ b/src/include/distributed/merge_planner.h @@ -1,18 +1,16 @@ /*------------------------------------------------------------------------- * - * multi_master_planner.h + * merge_planner.h * Function declarations for building planned statements; these statements - * are then executed on the master node. + * are then executed on the coordinator node. * * Copyright (c) Citus Data, Inc. * - * $Id$ - * *------------------------------------------------------------------------- */ -#ifndef MULTI_MASTER_PLANNER_H -#define MULTI_MASTER_PLANNER_H +#ifndef MERGE_PLANNER_H +#define MERGE_PLANNER_H #include "lib/stringinfo.h" #include "nodes/parsenodes.h" @@ -37,4 +35,4 @@ extern Unique * make_unique_from_sortclauses(Plan *lefttree, List *distinctList) extern bool ReplaceCitusExtraDataContainer; extern CustomScan *ReplaceCitusExtraDataContainerWithCustomScan; -#endif /* MULTI_MASTER_PLANNER_H */ +#endif /* MERGE_PLANNER_H */ diff --git a/src/include/distributed/metadata_cache.h b/src/include/distributed/metadata_cache.h index e8a2a7b19..657a71286 100644 --- a/src/include/distributed/metadata_cache.h +++ b/src/include/distributed/metadata_cache.h @@ -14,7 +14,7 @@ #include "postgres.h" #include "fmgr.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/pg_dist_partition.h" #include "distributed/worker_manager.h" #include "utils/hsearch.h" diff --git a/src/include/distributed/master_metadata_utility.h b/src/include/distributed/metadata_utility.h similarity index 97% rename from src/include/distributed/master_metadata_utility.h rename to src/include/distributed/metadata_utility.h index fab6b3861..90d6157e8 100644 --- a/src/include/distributed/master_metadata_utility.h +++ b/src/include/distributed/metadata_utility.h @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------- * - * master_metadata_utility.h + * metadata_utility.h * Type and function declarations used for reading and modifying master * node's metadata. * @@ -11,8 +11,8 @@ *------------------------------------------------------------------------- */ -#ifndef MASTER_METADATA_UTILITY_H -#define MASTER_METADATA_UTILITY_H +#ifndef METADATA_UTILITY_H +#define METADATA_UTILITY_H #include "postgres.h" @@ -168,4 +168,4 @@ extern ShardInterval * DeformedDistShardTupleToShardInterval(Datum *datumArray, extern void GetIntervalTypeInfo(char partitionMethod, Var *partitionColumn, Oid *intervalTypeId, int32 *intervalTypeMod); -#endif /* MASTER_METADATA_UTILITY_H */ +#endif /* METADATA_UTILITY_H */ diff --git a/src/include/distributed/multi_logical_optimizer.h b/src/include/distributed/multi_logical_optimizer.h index 4a0b61f61..6fc42f8a2 100644 --- a/src/include/distributed/multi_logical_optimizer.h +++ b/src/include/distributed/multi_logical_optimizer.h @@ -14,7 +14,7 @@ #ifndef MULTI_LOGICAL_OPTIMIZER_H #define MULTI_LOGICAL_OPTIMIZER_H -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/multi_logical_planner.h" #include "distributed/relation_restriction_equivalence.h" diff --git a/src/include/distributed/multi_partitioning_utils.h b/src/include/distributed/multi_partitioning_utils.h index 222c9cf9f..53ffdf37c 100644 --- a/src/include/distributed/multi_partitioning_utils.h +++ b/src/include/distributed/multi_partitioning_utils.h @@ -8,7 +8,7 @@ #define MULTI_PARTITIONING_UTILS_H_ -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "nodes/pg_list.h" diff --git a/src/include/distributed/multi_physical_planner.h b/src/include/distributed/multi_physical_planner.h index e96931c1f..88299e192 100644 --- a/src/include/distributed/multi_physical_planner.h +++ b/src/include/distributed/multi_physical_planner.h @@ -24,7 +24,7 @@ #include "distributed/citus_nodes.h" #include "distributed/errormessage.h" #include "distributed/log_utils.h" -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/worker_manager.h" #include "distributed/multi_logical_planner.h" #include "distributed/distributed_planner.h" diff --git a/src/include/distributed/relation_access_tracking.h b/src/include/distributed/relation_access_tracking.h index 1e4f7403a..dc215e8b6 100644 --- a/src/include/distributed/relation_access_tracking.h +++ b/src/include/distributed/relation_access_tracking.h @@ -9,7 +9,7 @@ #ifndef RELATION_ACCESS_TRACKING_H_ #define RELATION_ACCESS_TRACKING_H_ -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/multi_physical_planner.h" /* access Task struct */ #include "distributed/placement_connection.h" diff --git a/src/include/distributed/shardinterval_utils.h b/src/include/distributed/shardinterval_utils.h index c8eed3aad..9f6a5f99f 100644 --- a/src/include/distributed/shardinterval_utils.h +++ b/src/include/distributed/shardinterval_utils.h @@ -12,7 +12,7 @@ #ifndef SHARDINTERVAL_UTILS_H_ #define SHARDINTERVAL_UTILS_H_ -#include "distributed/master_metadata_utility.h" +#include "distributed/metadata_utility.h" #include "distributed/metadata_cache.h" #include "nodes/primnodes.h"