diff --git a/Makefile b/Makefile index 1521977de..82e454fb8 100644 --- a/Makefile +++ b/Makefile @@ -68,6 +68,7 @@ OBJS = src/backend/distributed/shared_library_init.o \ src/backend/distributed/test/partitioning_utils.o \ src/backend/distributed/test/progress_utils.o \ src/backend/distributed/test/prune_shard_list.o \ + src/backend/distributed/test/sequential_execution.o \ src/backend/distributed/transaction/backend_data.o \ src/backend/distributed/transaction/distributed_deadlock_detection.o \ src/backend/distributed/transaction/lock_graph.o \ diff --git a/src/backend/distributed/executor/multi_executor.c b/src/backend/distributed/executor/multi_executor.c index 6e4fe0d19..b506ea955 100644 --- a/src/backend/distributed/executor/multi_executor.c +++ b/src/backend/distributed/executor/multi_executor.c @@ -48,43 +48,9 @@ int MultiShardConnectionType = PARALLEL_CONNECTION; /* local function forward declarations */ -static void SetLocalMultiShardModifyModeToSequential(void); static Relation StubRelation(TupleDesc tupleDescriptor); -/* exports for SQL callable functions */ -PG_FUNCTION_INFO_V1(set_local_multi_shard_modify_mode_to_sequential); - - -/* - * set_local_multi_shard_modify_mode_to_sequential is a SQL - * interface for testing SetLocalMultiShardModifyModeToSequential(). - */ -Datum -set_local_multi_shard_modify_mode_to_sequential(PG_FUNCTION_ARGS) -{ - SetLocalMultiShardModifyModeToSequential(); - - PG_RETURN_VOID(); -} - - -/* - * SetLocalMultiShardModifyModeToSequential simply a C interface for - * setting the following: - * SET LOCAL citus.multi_shard_modify_mode = 'sequential'; - */ -static void -SetLocalMultiShardModifyModeToSequential() -{ - WarnNoTransactionChain(true, "SET LOCAL"); - - set_config_option("citus.multi_shard_modify_mode", "sequential", - (superuser() ? PGC_SUSET : PGC_USERSET), PGC_S_SESSION, - GUC_ACTION_LOCAL, true, 0, false); -} - - /* * ReturnTupleFromTuplestore reads the next tuple from the tuple store of the * given Citus scan node and returns it. It returns null if all tuples are read @@ -334,3 +300,19 @@ ExecutePlanIntoDestReceiver(PlannedStmt *queryPlan, ParamListInfo params, #endif PortalDrop(portal, false); } + + +/* + * SetLocalMultiShardModifyModeToSequential simply a C interface for + * setting the following: + * SET LOCAL citus.multi_shard_modify_mode = 'sequential'; + */ +void +SetLocalMultiShardModifyModeToSequential() +{ + WarnNoTransactionChain(true, "SET LOCAL"); + + set_config_option("citus.multi_shard_modify_mode", "sequential", + (superuser() ? PGC_SUSET : PGC_USERSET), PGC_S_SESSION, + GUC_ACTION_LOCAL, true, 0, false); +} diff --git a/src/backend/distributed/test/sequential_execution.c b/src/backend/distributed/test/sequential_execution.c new file mode 100644 index 000000000..3c4dcab6a --- /dev/null +++ b/src/backend/distributed/test/sequential_execution.c @@ -0,0 +1,33 @@ +/*------------------------------------------------------------------------- + * + * test/src/sequential_execution.c + * + * This file contains functions to test setting citus.multi_shard_modify_mode + * GUC. + * + * Copyright (c) 2018, Citus Data, Inc. + * + *------------------------------------------------------------------------- + */ + +#include "postgres.h" +#include "fmgr.h" + +#include "distributed/multi_executor.h" + + +/* exports for SQL callable functions */ +PG_FUNCTION_INFO_V1(set_local_multi_shard_modify_mode_to_sequential); + + +/* + * set_local_multi_shard_modify_mode_to_sequential is a SQL + * interface for testing SetLocalMultiShardModifyModeToSequential(). + */ +Datum +set_local_multi_shard_modify_mode_to_sequential(PG_FUNCTION_ARGS) +{ + SetLocalMultiShardModifyModeToSequential(); + + PG_RETURN_VOID(); +} diff --git a/src/include/distributed/multi_executor.h b/src/include/distributed/multi_executor.h index 58aab1395..17a9586a7 100644 --- a/src/include/distributed/multi_executor.h +++ b/src/include/distributed/multi_executor.h @@ -39,6 +39,7 @@ extern void ExecuteQueryIntoDestReceiver(Query *query, ParamListInfo params, DestReceiver *dest); extern void ExecutePlanIntoDestReceiver(PlannedStmt *queryPlan, ParamListInfo params, DestReceiver *dest); +extern void SetLocalMultiShardModifyModeToSequential(void); #endif /* MULTI_EXECUTOR_H */