diff --git a/src/backend/distributed/operations/worker_copy_table_to_node_udf.c b/src/backend/distributed/operations/worker_copy_table_to_node_udf.c index c603de72af0..43a405f1c17 100644 --- a/src/backend/distributed/operations/worker_copy_table_to_node_udf.c +++ b/src/backend/distributed/operations/worker_copy_table_to_node_udf.c @@ -40,6 +40,15 @@ worker_copy_table_to_node(PG_FUNCTION_ARGS) Oid relationId = PG_GETARG_OID(0); uint32_t targetNodeId = PG_GETARG_INT32(1); + if (IsCitusTable(relationId)) + { + char *qualifiedRelationName = generate_qualified_relation_name(relationId); + ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("table %s is a Citus table, only copies of " + "shards or regular postgres tables are supported", + qualifiedRelationName))); + } + Oid schemaOid = get_rel_namespace(relationId); char *relationSchemaName = get_namespace_name(schemaOid); char *relationName = get_rel_name(relationId); diff --git a/src/test/regress/expected/worker_copy_table_to_node.out b/src/test/regress/expected/worker_copy_table_to_node.out index 76f440189d0..93113561338 100644 --- a/src/test/regress/expected/worker_copy_table_to_node.out +++ b/src/test/regress/expected/worker_copy_table_to_node.out @@ -37,11 +37,9 @@ CREATE TABLE t_62629600(a int); SET search_path TO worker_copy_table_to_node; -- Make sure that the UDF doesn't work on Citus tables SELECT worker_copy_table_to_node('t', :worker_1_node); -ERROR: cannot execute a distributed query from a query on a shard -DETAIL: Executing a distributed query in a function call that may be pushed to a remote node can lead to incorrect results. +ERROR: table worker_copy_table_to_node.t is a Citus table, only copies of shards or regular postgres tables are supported SELECT worker_copy_table_to_node('ref', :worker_1_node); -ERROR: cannot execute a distributed query from a query on a shard -DETAIL: Executing a distributed query in a function call that may be pushed to a remote node can lead to incorrect results. +ERROR: table worker_copy_table_to_node.ref is a Citus table, only copies of shards or regular postgres tables are supported -- It should work on shards SELECT worker_copy_table_to_node('t_62629600', :worker_1_node); worker_copy_table_to_node