Style fixes in the distributed version.
diff --git a/cli/distributed/Cli.cpp b/cli/distributed/Cli.cpp
index 60b9c8d..6228898 100644
--- a/cli/distributed/Cli.cpp
+++ b/cli/distributed/Cli.cpp
@@ -48,8 +48,8 @@
#include "query_execution/QueryExecutionTypedefs.hpp"
#include "query_execution/QueryExecutionUtil.hpp"
#include "storage/DataExchangerAsync.hpp"
-#include "utility/StringUtil.hpp"
#include "storage/StorageBlockInfo.hpp"
+#include "utility/StringUtil.hpp"
#include "tmb/address.h"
#include "tmb/id_typedefs.h"
@@ -76,7 +76,7 @@
namespace quickstep {
-namespace S = ::quickstep::serialization;
+namespace S = serialization;
void Cli::init() {
cli_id_ = bus_.Connect();
diff --git a/cli/distributed/Conductor.cpp b/cli/distributed/Conductor.cpp
index cf2eb4b..3c68bfb 100644
--- a/cli/distributed/Conductor.cpp
+++ b/cli/distributed/Conductor.cpp
@@ -63,13 +63,13 @@
namespace quickstep {
-namespace S = ::quickstep::serialization;
+namespace S = serialization;
void Conductor::init() {
try {
string catalog_path = FLAGS_storage_path + kCatalogFilename;
- if (quickstep::FLAGS_initialize_db) { // Initialize the database
+ if (FLAGS_initialize_db) { // Initialize the database
DefaultsConfigurator::InitializeDefaultDatabase(FLAGS_storage_path, catalog_path);
}
diff --git a/query_optimizer/tests/DistributedExecutionGeneratorTest.cpp b/query_optimizer/tests/DistributedExecutionGeneratorTest.cpp
index 1e2120e..b18b5ec 100644
--- a/query_optimizer/tests/DistributedExecutionGeneratorTest.cpp
+++ b/query_optimizer/tests/DistributedExecutionGeneratorTest.cpp
@@ -39,6 +39,8 @@
using quickstep::TextBasedTest;
+using std::make_unique;
+
QUICKSTEP_GENERATE_TEXT_TEST(DISTRIBUTED_EXECUTION_GENERATOR_TEST);
int main(int argc, char** argv) {
@@ -59,11 +61,9 @@
std::ifstream input_file(argv[1]);
CHECK(input_file.is_open()) << argv[1];
- std::unique_ptr<quickstep::optimizer::DistributedExecutionGeneratorTestRunner>
- test_runner(
- new quickstep::optimizer::DistributedExecutionGeneratorTestRunner(argv[3]));
- test_driver.reset(
- new quickstep::TextBasedTestDriver(&input_file, test_runner.get()));
+
+ auto test_runner = make_unique<quickstep::optimizer::DistributedExecutionGeneratorTestRunner>(argv[3]);
+ test_driver = make_unique<quickstep::TextBasedTestDriver>(&input_file, test_runner.get());
test_driver->registerOption(
quickstep::optimizer::DistributedExecutionGeneratorTestRunner::kResetOption);
diff --git a/query_optimizer/tests/DistributedExecutionGeneratorTestRunner.cpp b/query_optimizer/tests/DistributedExecutionGeneratorTestRunner.cpp
index 6bd7a1f..3b1259a 100644
--- a/query_optimizer/tests/DistributedExecutionGeneratorTestRunner.cpp
+++ b/query_optimizer/tests/DistributedExecutionGeneratorTestRunner.cpp
@@ -37,8 +37,10 @@
#include "query_execution/ForemanDistributed.hpp"
#include "query_execution/QueryExecutionTypedefs.hpp"
#include "query_execution/QueryExecutionUtil.hpp"
+#include "query_optimizer/Optimizer.hpp"
#include "query_optimizer/OptimizerContext.hpp"
#include "query_optimizer/QueryHandle.hpp"
+#include "query_optimizer/tests/TestDatabaseLoader.hpp"
#include "storage/DataExchangerAsync.hpp"
#include "storage/StorageManager.hpp"
#include "utility/MemStream.hpp"
@@ -67,6 +69,8 @@
namespace {
+constexpr int kNumInstances = 3;
+
void nop() {}
} // namespace
@@ -147,6 +151,35 @@
}
}
+DistributedExecutionGeneratorTestRunner::~DistributedExecutionGeneratorTestRunner() {
+ const tmb::MessageBus::SendStatus send_status =
+ QueryExecutionUtil::SendTMBMessage(&bus_, cli_id_, foreman_->getBusClientID(), TaggedMessage(kPoisonMessage));
+ CHECK(send_status == tmb::MessageBus::SendStatus::kOK);
+
+ for (int i = 0; i < kNumInstances; ++i) {
+ workers_[i]->join();
+ shiftbosses_[i]->join();
+ }
+
+ foreman_->join();
+
+ test_database_loader_data_exchanger_.shutdown();
+ test_database_loader_.reset();
+ for (int i = 0; i < kNumInstances; ++i) {
+ data_exchangers_[i].shutdown();
+ storage_managers_[i].reset();
+ }
+
+ CHECK(MessageBus::SendStatus::kOK ==
+ QueryExecutionUtil::SendTMBMessage(&bus_, cli_id_, locator_client_id_, TaggedMessage(kPoisonMessage)));
+
+ test_database_loader_data_exchanger_.join();
+ for (int i = 0; i < kNumInstances; ++i) {
+ data_exchangers_[i].join();
+ }
+ block_locator_->join();
+}
+
void DistributedExecutionGeneratorTestRunner::runTestCase(
const string &input, const std::set<string> &options, string *output) {
// TODO(qzeng): Test multi-threaded query execution when we have a Sort operator.
@@ -174,27 +207,23 @@
const ParseStatement &parse_statement = *result.parsed_statement;
std::printf("%s\n", parse_statement.toString().c_str());
- const CatalogRelation *query_result_relation = nullptr;
+ auto query_handle = std::make_unique<QueryHandle>(query_id_++, cli_id_);
try {
OptimizerContext optimizer_context;
- auto query_handle = std::make_unique<QueryHandle>(query_id_++, cli_id_);
-
optimizer_.generateQueryHandle(parse_statement,
test_database_loader_->catalog_database(),
&optimizer_context,
query_handle.get());
- query_result_relation = query_handle->getQueryResultRelation();
-
- QueryExecutionUtil::ConstructAndSendAdmitRequestMessage(
- cli_id_,
- foreman_->getBusClientID(),
- query_handle.release(),
- &bus_);
} catch (const SqlError &error) {
*output = error.formatMessage(input);
break;
}
+ const CatalogRelation *query_result_relation = query_handle->getQueryResultRelation();
+
+ QueryExecutionUtil::ConstructAndSendAdmitRequestMessage(
+ cli_id_, foreman_->getBusClientID(), query_handle.release(), &bus_);
+
const tmb::AnnotatedMessage annotated_message = bus_.Receive(cli_id_, 0, true);
DCHECK_EQ(kQueryExecutionSuccessMessage, annotated_message.tagged_message.message_type());
diff --git a/query_optimizer/tests/DistributedExecutionGeneratorTestRunner.hpp b/query_optimizer/tests/DistributedExecutionGeneratorTestRunner.hpp
index 2cd2427..2c0381b 100644
--- a/query_optimizer/tests/DistributedExecutionGeneratorTestRunner.hpp
+++ b/query_optimizer/tests/DistributedExecutionGeneratorTestRunner.hpp
@@ -31,7 +31,6 @@
#include "query_execution/BlockLocator.hpp"
#include "query_execution/ForemanDistributed.hpp"
#include "query_execution/QueryExecutionTypedefs.hpp"
-#include "query_execution/QueryExecutionUtil.hpp"
#include "query_execution/Shiftboss.hpp"
#include "query_execution/Worker.hpp"
#include "query_execution/WorkerDirectory.hpp"
@@ -45,16 +44,10 @@
#include "glog/logging.h"
#include "tmb/id_typedefs.h"
-#include "tmb/message_bus.h"
-#include "tmb/tagged_message.h"
namespace quickstep {
namespace optimizer {
-namespace {
-constexpr int kNumInstances = 3;
-} // namespace
-
/**
* @brief TextBasedTestRunner for testing the ExecutionGenerator in the
* distributed version.
@@ -72,43 +65,7 @@
*/
explicit DistributedExecutionGeneratorTestRunner(const std::string &storage_path);
- ~DistributedExecutionGeneratorTestRunner() {
- tmb::TaggedMessage poison_tagged_message(quickstep::kPoisonMessage);
-
- const tmb::MessageBus::SendStatus send_status =
- QueryExecutionUtil::SendTMBMessage(
- &bus_,
- cli_id_,
- foreman_->getBusClientID(),
- std::move(poison_tagged_message));
- CHECK(send_status == tmb::MessageBus::SendStatus::kOK);
-
- for (int i = 0; i < kNumInstances; ++i) {
- workers_[i]->join();
- shiftbosses_[i]->join();
- }
-
- foreman_->join();
-
- test_database_loader_data_exchanger_.shutdown();
- test_database_loader_.reset();
- for (int i = 0; i < kNumInstances; ++i) {
- data_exchangers_[i].shutdown();
- storage_managers_[i].reset();
- }
-
- CHECK(MessageBus::SendStatus::kOK ==
- QueryExecutionUtil::SendTMBMessage(&bus_,
- cli_id_,
- locator_client_id_,
- tmb::TaggedMessage(quickstep::kPoisonMessage)));
-
- test_database_loader_data_exchanger_.join();
- for (int i = 0; i < kNumInstances; ++i) {
- data_exchangers_[i].join();
- }
- block_locator_->join();
- }
+ ~DistributedExecutionGeneratorTestRunner();
void runTestCase(const std::string &input,
const std::set<std::string> &options,
diff --git a/query_optimizer/tests/execution_generator/CMakeLists.txt b/query_optimizer/tests/execution_generator/CMakeLists.txt
index d38f4aa..40629ee 100644
--- a/query_optimizer/tests/execution_generator/CMakeLists.txt
+++ b/query_optimizer/tests/execution_generator/CMakeLists.txt
@@ -15,68 +15,6 @@
# specific language governing permissions and limitations
# under the License.
-if (ENABLE_DISTRIBUTED)
- add_test(quickstep_queryoptimizer_tests_distributed_executiongenerator_create
- "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
- "${CMAKE_CURRENT_SOURCE_DIR}/Create.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedCreate.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedCreate/")
- add_test(quickstep_queryoptimizer_tests_distributed_executiongenerator_delete
- "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
- "${CMAKE_CURRENT_SOURCE_DIR}/Delete.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedDelete.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedDelete/")
- add_test(quickstep_queryoptimizer_tests_distributed_executiongenerator_distinct
- "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
- "${CMAKE_CURRENT_SOURCE_DIR}/Distinct.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedDistinct.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedDistinct/")
- add_test(quickstep_queryoptimizer_tests_distributed_executiongenerator_drop
- "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
- "${CMAKE_CURRENT_SOURCE_DIR}/Drop.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedDrop.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedDrop/")
- add_test(quickstep_queryoptimizer_tests_distributed_executiongenerator_index
- "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
- "${CMAKE_CURRENT_SOURCE_DIR}/Index.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedIndex.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedIndex/")
- add_test(quickstep_queryoptimizer_tests_distributed_executiongenerator_insert
- "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
- "${CMAKE_CURRENT_SOURCE_DIR}/Insert.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedInsert.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedInsert/")
- add_test(quickstep_queryoptimizer_tests_distributed_executiongenerator_join
- "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
- "${CMAKE_CURRENT_SOURCE_DIR}/Join.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedJoin.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedJoin/")
- add_test(quickstep_queryoptimizer_tests_distributed_executiongenerator_partition
- "../quickstep_queryoptimizer_tests_ExecutionGeneratorTest"
- "${CMAKE_CURRENT_SOURCE_DIR}/Partition.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedPartition.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedPartition/")
- add_test(quickstep_queryoptimizer_tests_distributed_executiongenerator_select
- "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
- "${CMAKE_CURRENT_SOURCE_DIR}/Select.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedSelect.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedSelect/")
- add_test(quickstep_queryoptimizer_tests_distributed_executiongenerator_stringpatternmatching
- "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
- "${CMAKE_CURRENT_SOURCE_DIR}/StringPatternMatching.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedStringPatternMatching.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedStringPatternMatching/")
- add_test(quickstep_queryoptimizer_tests_distributed_executiongenerator_tablegenerator
- "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
- "${CMAKE_CURRENT_SOURCE_DIR}/TableGenerator.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedTableGenerator.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedTableGenerator/")
- add_test(quickstep_queryoptimizer_tests_distributed_executiongenerator_update
- "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
- "${CMAKE_CURRENT_SOURCE_DIR}/Update.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedUpdate.test"
- "${CMAKE_CURRENT_BINARY_DIR}/DistributedUpdate/")
-endif(ENABLE_DISTRIBUTED)
add_test(quickstep_queryoptimizer_tests_executiongenerator_create
"../quickstep_queryoptimizer_tests_ExecutionGeneratorTest"
"${CMAKE_CURRENT_SOURCE_DIR}/Create.test"
@@ -138,25 +76,74 @@
"${CMAKE_CURRENT_BINARY_DIR}/Update.test"
"${CMAKE_CURRENT_BINARY_DIR}/Update/")
+if (ENABLE_DISTRIBUTED)
+ add_test(quickstep_queryoptimizer_tests_executiongenerator_create_distributed
+ "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Create.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/CreateDistributed.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/CreateDistributed/")
+ add_test(quickstep_queryoptimizer_tests_executiongenerator_delete_distributed
+ "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Delete.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/DeleteDistributed.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/DeleteDistributed/")
+ add_test(quickstep_queryoptimizer_tests_executiongenerator_distinct_distributed
+ "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Distinct.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/DistinctDistributed.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/DistinctDistributed/")
+ add_test(quickstep_queryoptimizer_tests_executiongenerator_drop_distributed
+ "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Drop.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/DropDistributed.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/DropDistributed/")
+ add_test(quickstep_queryoptimizer_tests_executiongenerator_index_distributed
+ "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Index.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/IndexDistributed.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/IndexDistributed/")
+ add_test(quickstep_queryoptimizer_tests_executiongenerator_insert_distributed
+ "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Insert.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/InsertDistributed.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/InsertDistributed/")
+ add_test(quickstep_queryoptimizer_tests_executiongenerator_join_distributed
+ "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Join.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/JoinDistributed.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/JoinDistributed/")
+ add_test(quickstep_queryoptimizer_tests_executiongenerator_partition_distributed
+ "../quickstep_queryoptimizer_tests_ExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Partition.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/PartitionDistributed.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/PartitionDistributed/")
+ add_test(quickstep_queryoptimizer_tests_executiongenerator_select_distributed
+ "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Select.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/SelectDistributed.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/SelectDistributed/")
+ add_test(quickstep_queryoptimizer_tests_executiongenerator_stringpatternmatching_distributed
+ "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/StringPatternMatching.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/StringPatternMatchingDistributed.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/StringPatternMatchingDistributed/")
+ add_test(quickstep_queryoptimizer_tests_executiongenerator_tablegenerator_distributed
+ "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/TableGenerator.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/TableGeneratorDistributed.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/TableGeneratorDistributed/")
+ add_test(quickstep_queryoptimizer_tests_executiongenerator_update_distributed
+ "../quickstep_queryoptimizer_tests_DistributedExecutionGeneratorTest"
+ "${CMAKE_CURRENT_SOURCE_DIR}/Update.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/UpdateDistributed.test"
+ "${CMAKE_CURRENT_BINARY_DIR}/UpdateDistributed/")
+endif(ENABLE_DISTRIBUTED)
+
# Create the folders where the unit tests will store their data blocks for the
# duration of their test.
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Create)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Delete)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Distinct)
-if (ENABLE_DISTRIBUTED)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistributedCreate)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistributedDelete)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistributedDistinct)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistributedDrop)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistributedIndex)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistributedInsert)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistributedJoin)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistributedPartition)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistributedSelect)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistributedStringPatternMatching)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistributedTableGenerator)
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistributedUpdate)
-endif(ENABLE_DISTRIBUTED)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Drop)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Index)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Insert)
@@ -166,3 +153,18 @@
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/StringPatternMatching)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/TableGenerator)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Update)
+
+if (ENABLE_DISTRIBUTED)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/CreateDistributed)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DeleteDistributed)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DistinctDistributed)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DropDistributed)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/IndexDistributed)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/InsertDistributed)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/JoinDistributed)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/PartitionDistributed)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/SelectDistributed)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/StringPatternMatchingDistributed)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/TableGeneratorDistributed)
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/UpdateDistributed)
+endif(ENABLE_DISTRIBUTED)