diff --git a/src/backend/distributed/master/master_stage_protocol.c b/src/backend/distributed/master/master_stage_protocol.c index f647ebec2..c04ba0858 100644 --- a/src/backend/distributed/master/master_stage_protocol.c +++ b/src/backend/distributed/master/master_stage_protocol.c @@ -278,6 +278,8 @@ master_append_table_to_shard(PG_FUNCTION_ARGS) quote_literal_cstr(sourceTableName), quote_literal_cstr(sourceNodeName), sourceNodePort); + RemoteTransactionBeginIfNecessary(connection); + executeResult = ExecuteOptionalRemoteCommand(connection, workerAppendQuery->data, &queryResult); PQclear(queryResult); diff --git a/src/test/regress/input/multi_append_table_to_shard.source b/src/test/regress/input/multi_append_table_to_shard.source index def84b299..95cd72deb 100644 --- a/src/test/regress/input/multi_append_table_to_shard.source +++ b/src/test/regress/input/multi_append_table_to_shard.source @@ -138,5 +138,16 @@ WHERE 'multi_append_table_to_shard_date'::regclass::oid = logicalrelid; SELECT * FROM multi_append_table_to_shard_date; +-- When run inside aborted transaction does not persist changes +INSERT INTO multi_append_table_to_shard_stage VALUES ('2016-02-02', 4); +BEGIN; +SELECT master_append_table_to_shard(shardid, 'multi_append_table_to_shard_stage', 'localhost', 57636) +FROM + pg_dist_shard +WHERE 'multi_append_table_to_shard_date'::regclass::oid = logicalrelid; +ROLLBACK; + +SELECT * FROM multi_append_table_to_shard_date; + DROP TABLE multi_append_table_to_shard_stage; DROP TABLE multi_append_table_to_shard_date; diff --git a/src/test/regress/output/multi_append_table_to_shard.source b/src/test/regress/output/multi_append_table_to_shard.source index 32d7901cf..409c87f05 100644 --- a/src/test/regress/output/multi_append_table_to_shard.source +++ b/src/test/regress/output/multi_append_table_to_shard.source @@ -227,5 +227,26 @@ SELECT * FROM multi_append_table_to_shard_date; 01-01-2016 | 3 (3 rows) +-- When run inside aborted transaction does not persist changes +INSERT INTO multi_append_table_to_shard_stage VALUES ('2016-02-02', 4); +BEGIN; +SELECT master_append_table_to_shard(shardid, 'multi_append_table_to_shard_stage', 'localhost', 57636) +FROM + pg_dist_shard +WHERE 'multi_append_table_to_shard_date'::regclass::oid = logicalrelid; + master_append_table_to_shard +------------------------------ + 0.0266667 +(1 row) + +ROLLBACK; +SELECT * FROM multi_append_table_to_shard_date; + event_date | value +------------+------- + | + | + 01-01-2016 | 3 +(3 rows) + DROP TABLE multi_append_table_to_shard_stage; DROP TABLE multi_append_table_to_shard_date;