From cfea11b1371618994cc92b539570302888886156 Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Mon, 23 Jan 2017 16:27:05 +0100 Subject: [PATCH] Allow start_metadata_sync_to_node in a transaction block --- src/backend/distributed/metadata/metadata_sync.c | 2 -- src/test/regress/expected/multi_metadata_sync.out | 14 ++------------ src/test/regress/sql/multi_metadata_sync.sql | 10 ++-------- 3 files changed, 4 insertions(+), 22 deletions(-) diff --git a/src/backend/distributed/metadata/metadata_sync.c b/src/backend/distributed/metadata/metadata_sync.c index b69ec3139..6ca440030 100644 --- a/src/backend/distributed/metadata/metadata_sync.c +++ b/src/backend/distributed/metadata/metadata_sync.c @@ -86,8 +86,6 @@ start_metadata_sync_to_node(PG_FUNCTION_ARGS) EnsureSchemaNode(); EnsureSuperUser(); - PreventTransactionChain(true, "start_metadata_sync_to_node"); - workerNode = FindWorkerNode(nodeNameString, nodePort); if (workerNode == NULL) diff --git a/src/test/regress/expected/multi_metadata_sync.out b/src/test/regress/expected/multi_metadata_sync.out index f034c3a73..e2e7b1b57 100644 --- a/src/test/regress/expected/multi_metadata_sync.out +++ b/src/test/regress/expected/multi_metadata_sync.out @@ -313,6 +313,7 @@ RESET citus.shard_replication_factor; RESET citus.replication_model; -- Check that repeated calls to start_metadata_sync_to_node has no side effects \c - - - :master_port +BEGIN; SELECT start_metadata_sync_to_node('localhost', :worker_1_port); start_metadata_sync_to_node ----------------------------- @@ -325,6 +326,7 @@ SELECT start_metadata_sync_to_node('localhost', :worker_1_port); (1 row) +COMMIT; \c - - - :worker_1_port SELECT * FROM pg_dist_local_group; groupid @@ -388,18 +390,6 @@ SELECT count(*) FROM pg_trigger WHERE tgrelid='mx_testing_schema.mx_test_table': 1 (1 row) --- Make sure that start_metadata_sync_to_node cannot be called inside a transaction -\c - - - :master_port -BEGIN; -SELECT start_metadata_sync_to_node('localhost', :worker_2_port); -ERROR: start_metadata_sync_to_node cannot run inside a transaction block -ROLLBACK; -SELECT hasmetadata FROM pg_dist_node WHERE nodeport=:worker_2_port; - hasmetadata -------------- - f -(1 row) - -- Check that the distributed table can be queried from the worker \c - - - :master_port SET citus.shard_replication_factor TO 1; diff --git a/src/test/regress/sql/multi_metadata_sync.sql b/src/test/regress/sql/multi_metadata_sync.sql index 68ad4f615..6ef96d8e9 100644 --- a/src/test/regress/sql/multi_metadata_sync.sql +++ b/src/test/regress/sql/multi_metadata_sync.sql @@ -119,8 +119,10 @@ RESET citus.replication_model; -- Check that repeated calls to start_metadata_sync_to_node has no side effects \c - - - :master_port +BEGIN; SELECT start_metadata_sync_to_node('localhost', :worker_1_port); SELECT start_metadata_sync_to_node('localhost', :worker_1_port); +COMMIT; \c - - - :worker_1_port SELECT * FROM pg_dist_local_group; SELECT * FROM pg_dist_node ORDER BY nodeid; @@ -130,14 +132,6 @@ SELECT * FROM pg_dist_shard_placement ORDER BY shardid; \d mx_testing_schema.mx_test_table SELECT count(*) FROM pg_trigger WHERE tgrelid='mx_testing_schema.mx_test_table'::regclass; --- Make sure that start_metadata_sync_to_node cannot be called inside a transaction -\c - - - :master_port -BEGIN; -SELECT start_metadata_sync_to_node('localhost', :worker_2_port); -ROLLBACK; - -SELECT hasmetadata FROM pg_dist_node WHERE nodeport=:worker_2_port; - -- Check that the distributed table can be queried from the worker \c - - - :master_port SET citus.shard_replication_factor TO 1;