mirror of https://github.com/citusdata/citus.git
Remove master from file hierarchy
parent
b71f82b31e
commit
d1bab78d79
|
@ -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)
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 <stddef.h>
|
||||
|
||||
#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)));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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)
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
|
@ -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.
|
|
@ -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"
|
|
@ -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"
|
|
@ -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"
|
|
@ -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"
|
|
@ -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"
|
|
@ -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"
|
|
@ -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"
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 */
|
|
@ -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 */
|
|
@ -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"
|
||||
|
|
|
@ -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 */
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
Loading…
Reference in New Issue