mirror of https://github.com/citusdata/citus.git
Replicate reference tables before master_create_empty_shard
parent
c03d3714b3
commit
1250d691d3
|
@ -43,6 +43,7 @@
|
|||
#include "distributed/pg_dist_partition.h"
|
||||
#include "distributed/pg_dist_shard.h"
|
||||
#include "distributed/placement_connection.h"
|
||||
#include "distributed/reference_table_utils.h"
|
||||
#include "distributed/relation_access_tracking.h"
|
||||
#include "distributed/remote_commands.h"
|
||||
#include "distributed/resource_lock.h"
|
||||
|
@ -107,6 +108,7 @@ master_create_empty_shard(PG_FUNCTION_ARGS)
|
|||
*/
|
||||
ObjectAddressSet(tableAddress, RelationRelationId, relationId);
|
||||
EnsureDependenciesExistOnAllNodes(&tableAddress);
|
||||
EnsureReferenceTablesExistOnAllNodes();
|
||||
|
||||
/* don't allow the table to be dropped */
|
||||
LockRelationOid(relationId, AccessShareLock);
|
||||
|
|
|
@ -863,6 +863,45 @@ SELECT count(*) - :ref_table_placements FROM pg_dist_shard_placement WHERE shard
|
|||
-1
|
||||
(1 row)
|
||||
|
||||
-- verify that master_create_empty_shard replicates reference table shards
|
||||
CREATE TABLE range_table(a int);
|
||||
SELECT create_distributed_table('range_table', 'a', 'range');
|
||||
create_distributed_table
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT 1 FROM master_add_node('localhost', :worker_2_port);
|
||||
?column?
|
||||
---------------------------------------------------------------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) - :ref_table_placements FROM pg_dist_shard_placement WHERE shardid = :ref_table_shard;
|
||||
?column?
|
||||
---------------------------------------------------------------------
|
||||
-1
|
||||
(1 row)
|
||||
|
||||
SELECT 1 FROM master_create_empty_shard('range_table');
|
||||
?column?
|
||||
---------------------------------------------------------------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) - :ref_table_placements FROM pg_dist_shard_placement WHERE shardid = :ref_table_shard;
|
||||
?column?
|
||||
---------------------------------------------------------------------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
DROP TABLE range_table;
|
||||
SELECT 1 FROM master_remove_node('localhost', :worker_2_port);
|
||||
?column?
|
||||
---------------------------------------------------------------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
-- test setting citus.replicate_reference_tables_on_activate to on
|
||||
-- master_add_node
|
||||
SET citus.replicate_reference_tables_on_activate TO on;
|
||||
|
|
|
@ -560,6 +560,19 @@ SELECT 1 FROM master_remove_node('localhost', :worker_2_port);
|
|||
|
||||
SELECT count(*) - :ref_table_placements FROM pg_dist_shard_placement WHERE shardid = :ref_table_shard;
|
||||
|
||||
-- verify that master_create_empty_shard replicates reference table shards
|
||||
CREATE TABLE range_table(a int);
|
||||
SELECT create_distributed_table('range_table', 'a', 'range');
|
||||
|
||||
SELECT 1 FROM master_add_node('localhost', :worker_2_port);
|
||||
|
||||
SELECT count(*) - :ref_table_placements FROM pg_dist_shard_placement WHERE shardid = :ref_table_shard;
|
||||
SELECT 1 FROM master_create_empty_shard('range_table');
|
||||
SELECT count(*) - :ref_table_placements FROM pg_dist_shard_placement WHERE shardid = :ref_table_shard;
|
||||
|
||||
DROP TABLE range_table;
|
||||
SELECT 1 FROM master_remove_node('localhost', :worker_2_port);
|
||||
|
||||
-- test setting citus.replicate_reference_tables_on_activate to on
|
||||
-- master_add_node
|
||||
SET citus.replicate_reference_tables_on_activate TO on;
|
||||
|
|
Loading…
Reference in New Issue