Skip to content

Commit

Permalink
Check for Citus table in worker_copy_table_to_node
Browse files Browse the repository at this point in the history
  • Loading branch information
Karina Litskevich committed Jul 25, 2024
1 parent 2a263fe commit d26aeab
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
6 changes: 2 additions & 4 deletions src/test/regress/expected/worker_copy_table_to_node.out
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit d26aeab

Please sign in to comment.