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_partition.h"
|
||||||
#include "distributed/pg_dist_shard.h"
|
#include "distributed/pg_dist_shard.h"
|
||||||
#include "distributed/placement_connection.h"
|
#include "distributed/placement_connection.h"
|
||||||
|
#include "distributed/reference_table_utils.h"
|
||||||
#include "distributed/relation_access_tracking.h"
|
#include "distributed/relation_access_tracking.h"
|
||||||
#include "distributed/remote_commands.h"
|
#include "distributed/remote_commands.h"
|
||||||
#include "distributed/resource_lock.h"
|
#include "distributed/resource_lock.h"
|
||||||
|
@ -107,6 +108,7 @@ master_create_empty_shard(PG_FUNCTION_ARGS)
|
||||||
*/
|
*/
|
||||||
ObjectAddressSet(tableAddress, RelationRelationId, relationId);
|
ObjectAddressSet(tableAddress, RelationRelationId, relationId);
|
||||||
EnsureDependenciesExistOnAllNodes(&tableAddress);
|
EnsureDependenciesExistOnAllNodes(&tableAddress);
|
||||||
|
EnsureReferenceTablesExistOnAllNodes();
|
||||||
|
|
||||||
/* don't allow the table to be dropped */
|
/* don't allow the table to be dropped */
|
||||||
LockRelationOid(relationId, AccessShareLock);
|
LockRelationOid(relationId, AccessShareLock);
|
||||||
|
|
|
@ -863,6 +863,45 @@ SELECT count(*) - :ref_table_placements FROM pg_dist_shard_placement WHERE shard
|
||||||
-1
|
-1
|
||||||
(1 row)
|
(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
|
-- test setting citus.replicate_reference_tables_on_activate to on
|
||||||
-- master_add_node
|
-- master_add_node
|
||||||
SET citus.replicate_reference_tables_on_activate TO on;
|
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;
|
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
|
-- test setting citus.replicate_reference_tables_on_activate to on
|
||||||
-- master_add_node
|
-- master_add_node
|
||||||
SET citus.replicate_reference_tables_on_activate TO on;
|
SET citus.replicate_reference_tables_on_activate TO on;
|
||||||
|
|
Loading…
Reference in New Issue