You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by zu...@apache.org on 2017/03/01 22:32:37 UTC

[1/3] incubator-quickstep git commit: Fix a bug with SelectOperator [Forced Update!]

Repository: incubator-quickstep
Updated Branches:
  refs/heads/dist-fix 7550f8361 -> 5e0c32acd (forced update)


Fix a bug with SelectOperator


Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/e896b61d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/e896b61d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/e896b61d

Branch: refs/heads/dist-fix
Commit: e896b61d1932d4593cb18033fe4da23a5e238f77
Parents: e41a6aa
Author: jianqiao <ji...@cs.wisc.edu>
Authored: Wed Mar 1 13:16:47 2017 -0600
Committer: jianqiao <ji...@cs.wisc.edu>
Committed: Wed Mar 1 13:16:47 2017 -0600

----------------------------------------------------------------------
 relational_operators/SelectOperator.hpp                       | 7 +++++--
 .../tests/SortRunGenerationOperator_unittest.cpp              | 2 +-
 2 files changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e896b61d/relational_operators/SelectOperator.hpp
----------------------------------------------------------------------
diff --git a/relational_operators/SelectOperator.hpp b/relational_operators/SelectOperator.hpp
index b9a4d49..df61c06 100644
--- a/relational_operators/SelectOperator.hpp
+++ b/relational_operators/SelectOperator.hpp
@@ -202,9 +202,12 @@ class SelectOperator : public RelationalOperator {
 
   bool getAllWorkOrderProtos(WorkOrderProtosContainer *container) override;
 
-  void feedInputBlock(const block_id input_block_id, const relation_id input_relation_id,
+  void feedInputBlock(const block_id input_block_id,
+                      const relation_id input_relation_id,
                       const partition_id part_id) override {
-    input_relation_block_ids_[part_id].push_back(input_block_id);
+    if (input_relation_id == input_relation_.getID()) {
+      input_relation_block_ids_[part_id].push_back(input_block_id);
+    }
   }
 
   QueryContext::insert_destination_id getInsertDestinationID() const override {

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e896b61d/relational_operators/tests/SortRunGenerationOperator_unittest.cpp
----------------------------------------------------------------------
diff --git a/relational_operators/tests/SortRunGenerationOperator_unittest.cpp b/relational_operators/tests/SortRunGenerationOperator_unittest.cpp
index 99fafa8..acdd422 100644
--- a/relational_operators/tests/SortRunGenerationOperator_unittest.cpp
+++ b/relational_operators/tests/SortRunGenerationOperator_unittest.cpp
@@ -622,7 +622,7 @@ TEST_F(SortRunGenerationOperatorTest, 3Column_NullLast_Asc) {
 
   // Comparator for null-col-1 ASC NULLS LAST, null-col-2 ASC NULLS LAST,
   // null-col-3 ASC NULLS LAST.
-  auto comparator = [this](const Tuple &left, const Tuple &right) -> bool {
+  auto comparator = [](const Tuple &left, const Tuple &right) -> bool {
     TestTupleAttrs l = TupleToTupleAttr(left);
     TestTupleAttrs r = TupleToTupleAttr(right);
     l.c1 = l.null_c4 ? std::numeric_limits<int>::max() : l.c1;


[2/3] incubator-quickstep git commit: Init release scripts Includes: Script to do common release tasks - subcommand to create artifacts - subcommand to publish release candidates - subcommand to test a release candidate

Posted by zu...@apache.org.
Init release scripts
Includes:
Script to do common release tasks
- subcommand to create artifacts
- subcommand to publish release candidates
- subcommand to test a release candidate

All commands are parameterized by the .profile file


Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/6a240fcd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/6a240fcd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/6a240fcd

Branch: refs/heads/dist-fix
Commit: 6a240fcd1452abb7870a9e8ec82ed8f60f75e9c4
Parents: e896b61
Author: cramja <ma...@gmail.com>
Authored: Tue Feb 28 11:13:30 2017 -0600
Committer: cramja <ma...@gmail.com>
Committed: Wed Mar 1 16:07:58 2017 -0600

----------------------------------------------------------------------
 .gitattributes                  |   1 +
 release/.gitignore              |   3 +
 release/README.md               |  34 +++++++
 release/release_cmds.sh         | 172 +++++++++++++++++++++++++++++++++++
 release/release_manager.profile |  29 ++++++
 5 files changed, 239 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/6a240fcd/.gitattributes
----------------------------------------------------------------------
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..c0aaef0
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+release export-ignore

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/6a240fcd/release/.gitignore
----------------------------------------------------------------------
diff --git a/release/.gitignore b/release/.gitignore
new file mode 100644
index 0000000..0716d9f
--- /dev/null
+++ b/release/.gitignore
@@ -0,0 +1,3 @@
+.release_manager.profile
+svn-*
+apache-*

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/6a240fcd/release/README.md
----------------------------------------------------------------------
diff --git a/release/README.md b/release/README.md
new file mode 100644
index 0000000..5776e09
--- /dev/null
+++ b/release/README.md
@@ -0,0 +1,34 @@
+## Scripts to help release Quickstep
+
+### Preqs
+
+You must fill out `release_manager.profile` first.
+
+You'll need:
+  * md5sum
+  * shasum
+  * svn
+  * gpg
+  * tar
+  * gzip
+
+This is of course in addition to the regular build tools.
+
+### Usage Overview
+
+```
+# Test a candidate
+./release_cmds.sh test
+
+# Create candidate artifacts
+./release_cmds.sh create
+
+# Publish candidate artifacts (after you've created them)
+./release_cmds.sh publish
+```
+
+* A full guide to releases can be found on [confluence][cwiki-howto].
+* PGP key generation is discussed [here][pgp-keys]
+
+[cwiki-howto]: https://cwiki.apache.org/confluence/display/QUICKSTEP/How+To+Release
+[pgp-keys]: http://quickstep.apache.org/release-signing/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/6a240fcd/release/release_cmds.sh
----------------------------------------------------------------------
diff --git a/release/release_cmds.sh b/release/release_cmds.sh
new file mode 100755
index 0000000..d23b4ef
--- /dev/null
+++ b/release/release_cmds.sh
@@ -0,0 +1,172 @@
+#!/usr/bin/env bash
+
+# Functions for Releasing Quickstep
+# Usage: Fill out your details in release_manager.profile.
+#        ./release_cmds [create|publish|test]
+#
+# Note: This script is a scratch pad with most of the relevent commands. Modify 
+#       it to see fit. We'll finalize it when we understand the process better.
+#       
+#       Everything in this script assumes that you are running in the release/ 
+#       folder of your quickstep directory.
+#
+# PREREQS:
+#  - full details on how to do a release is in a confluence article: How to Release
+#  - You must have previously created a pgp key using your apache username
+#    and uploaded it to a keyserver [http://quickstep.apache.org/release-signing/]
+#
+
+### Helper functions
+
+create_artifacts() {
+  # Updates submodules, archives everything, signs it using your key (requires 
+  # user input), makes checksums, moves artifacts to release/ folder
+  #
+
+  export RELEASE_DIR=`pwd`
+  cd ..
+
+  # need the submodules to be included for the compile to work.
+  # likely, this will be a no-op
+  git submodule init
+  git submodule update
+
+  # you'll need to push this if you want the tag to be visible to committers
+  # the tag is necesary for the archiving to work correctly
+  git tag -a rc-$VERSION -m 'release candidate $VERSION'
+  git archive --format "tar" --prefix=$PROJECT_NAME-$VERSION/ -o $PROJECT_NAME-$VERSION.tar rc-$VERSION
+  git submodule foreach --recursive 'git archive --verbose --prefix=$PROJECT_NAME-$VERSION/$path/ --format tar master --output $RELEASE_DIR/submodule-$sha1.tar'
+  if [[ $(ls submodule-*.tar | wc -l) != 0  ]]; then
+    # combine all archives into one tar
+    tar --concatenate --file $PROJECT_NAME-$VERSION.tar submodule-*.tar
+    # remove sub tars
+    rm -rf submodule-*.tar
+  fi
+
+  # gzip final tar
+  gzip --force --verbose $PROJECT_NAME-$VERSION.tar
+
+  # Make the signature. This requires human input
+  gpg -u $APACHE_USERNAME@apache.org --armor --output $PROJECT_NAME-$VERSION.tar.gz.asc --detach-sign $PROJECT_NAME-$VERSION.tar.gz
+  # Make hashes
+  md5sum $PROJECT_NAME-$VERSION.tar.gz > $PROJECT_NAME-$VERSION.tar.gz.md5
+  sha1sum $PROJECT_NAME-$VERSION.tar.gz > $PROJECT_NAME-$VERSION.tar.gz.sha
+
+
+  # Make sure these three artifacts are good
+  gpg --verify $PROJECT_NAME-$VERSION.tar.gz.asc
+  md5sum --check $PROJECT_NAME-$VERSION.tar.gz.md5
+  sha1sum --check $PROJECT_NAME-$VERSION.tar.gz.sha
+
+  mv $PROJECT_NAME-$VERSION.tar.gz* $RELEASE_DIR
+
+  cd $RELEASE_DIR
+}
+
+publish_candidate() {
+  # push a RC to subversion. We use SVN sparse directories so as not to pull
+  # every artifact ever. Assumes that you have already created the artifacts
+  # and they reside in the release/ folder.
+  # directory layout is x.y.z/RCw, where w is the release candidate number
+  #
+
+  if [ ! -d "$SVN_DEV" ]; then
+    svn checkout --depth immediates $SVN_DEV_URL $SVN_DEV
+  fi
+
+  BASE_DIR=`pwd`
+  cd $SVN_DEV
+
+  if [ ! -d "$VERSION" ]; then
+    mkdir $VERSION
+    cd $VERSION
+  else
+    cd $VERSION
+    svn update --set-depth immediates .
+  fi
+
+  # now in $VERSION folder
+
+  RCFOLDER=RC$CANDIDATE
+  mkdir $RCFOLDER
+  cd $RCFOLDER
+  cp $BASE_DIR/$PROJECT_NAME-$VERSION.tar.gz* ./
+  cd ..
+
+  svn add $VERSION/$RCFOLDER
+  svn commit --username=$APACHE_USERNAME -m "Quickstep-$VERSION RC$CANDIDATE"
+
+  cd $BASE_DIR
+}
+
+test_candidate() {
+  # This is best run in /tmp
+  # tries checking out a release candidate and building
+  #
+
+  svn checkout --depth immediates $SVN_DEV_URL $SVN_DEV
+  cd $SVN_DEV
+
+  # add the KEYS file from quickstep to your gpg key ring
+  gpg --import KEYS
+
+  cd $VERSION
+  svn update --set-depth infinity RC$CANDIDATE
+  cd RC$CANDIDATE
+
+  tar -xzf $PROJECT_NAME-$VERSION.tar.gz
+
+  # verify artifacts
+  gpg --verify $PROJECT_NAME-$VERSION.tar.gz.asc
+  md5sum --check $PROJECT_NAME-$VERSION.tar.gz.md5
+  sha1sum --check $PROJECT_NAME-$VERSION.tar.gz.sha
+
+  # now build the release artifacts
+  cd $PROJECT_NAME-$VERSION
+
+  # first download third_party, then do your normal build
+  cd third_party/
+  ./download_and_patch_prerequisites.sh
+  cd ..
+  cd build
+  cmake ..
+  make
+}
+
+usage() {
+  echo "usage: $0 [create|publish|test]"
+  exit $1
+}
+
+### main
+
+source release_manager.profile
+if [ -z $APACHE_USERNAME ] || [ -z $VERSION ] || [ -z $CANDIDATE ]; then 
+  echo "please set release_manager.profile"
+  exit 1
+fi
+
+alias svn="svn --non-interactive"
+
+set -e
+
+if [ -z $1 ] ; then
+  usage 0
+fi
+
+echo "user: $APACHE_USERNAME"
+echo "version: $VERSION"
+echo "candidate: $CANDIDATE"
+
+if [ "create" == "$1" ] ; then
+  echo "creating artifacts ..."
+  create_artifacts
+elif [ "publish" == "$1" ] ; then
+  echo "publishing candidate artifacts ..."
+  publish_candidate 
+elif [ "test" == "$1" ] ; then
+  echo "testing candidate artifacts ..."
+  test_candidate
+else
+  usage 0
+fi

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/6a240fcd/release/release_manager.profile
----------------------------------------------------------------------
diff --git a/release/release_manager.profile b/release/release_manager.profile
new file mode 100644
index 0000000..6b51003
--- /dev/null
+++ b/release/release_manager.profile
@@ -0,0 +1,29 @@
+# Profile for Releasing Quickstep
+#
+# This script is for release managers. It is to be used in conjunction with 
+# the release_cmds script.
+#
+# Usage: Fill out this file with your apache details. Then source this file.
+#        Sourcing the release_cmds file will automatically source this.
+#
+
+# you must be registered with apache
+export APACHE_USERNAME=
+
+# quickstep version, Major.Minor.Increment
+export VERSION=
+
+# release candidate number. For a new version, this starts at 0
+export CANDIDATE=
+
+# folders corresponding to SVN repos where we keep our release artifacts
+export SVN_DEV=svn-quickstep-dev
+export SVN_REL=svn-quickstep-rel
+
+# you probably will not need to change things below this line
+export PROJECT_NAME=apache-quickstep-incubating
+
+# path to apache repo with quickstep releases
+
+export SVN_DEV_URL=https://dist.apache.org/repos/dist/dev/incubator/quickstep
+export SVN_REL_URL=https://dist.apache.org/repos/dist/rel/incubator/quickstep
\ No newline at end of file


[3/3] incubator-quickstep git commit: Style fixes in the distributed version.

Posted by zu...@apache.org.
Style fixes in the distributed version.


Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/5e0c32ac
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/5e0c32ac
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/5e0c32ac

Branch: refs/heads/dist-fix
Commit: 5e0c32acdf4080f4461e178aeea1af7d6eb80420
Parents: 6a240fc
Author: Zuyu Zhang <zu...@apache.org>
Authored: Tue Feb 28 14:19:17 2017 -0800
Committer: Zuyu Zhang <zu...@apache.org>
Committed: Wed Mar 1 14:32:11 2017 -0800

----------------------------------------------------------------------
 cli/distributed/Cli.cpp                         |   4 +-
 cli/distributed/Conductor.cpp                   |   4 +-
 .../tests/DistributedExecutionGeneratorTest.cpp |  10 +-
 .../DistributedExecutionGeneratorTestRunner.cpp |  49 ++++--
 .../DistributedExecutionGeneratorTestRunner.hpp |  45 +-----
 .../tests/execution_generator/CMakeLists.txt    | 154 ++++++++++---------
 6 files changed, 127 insertions(+), 139 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/5e0c32ac/cli/distributed/Cli.cpp
----------------------------------------------------------------------
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 @@ typedef quickstep::LineReaderDumb LineReaderImpl;
 #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 @@ using tmb::client_id;
 
 namespace quickstep {
 
-namespace S = ::quickstep::serialization;
+namespace S = serialization;
 
 void Cli::init() {
   cli_id_ = bus_.Connect();

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/5e0c32ac/cli/distributed/Conductor.cpp
----------------------------------------------------------------------
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 @@ using tmb::client_id;
 
 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);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/5e0c32ac/query_optimizer/tests/DistributedExecutionGeneratorTest.cpp
----------------------------------------------------------------------
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 @@ DECLARE_bool(use_filter_joins);
 
 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 @@ int main(int argc, char** argv) {
 
   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);
 

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/5e0c32ac/query_optimizer/tests/DistributedExecutionGeneratorTestRunner.cpp
----------------------------------------------------------------------
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 optimizer {
 
 namespace {
 
+constexpr int kNumInstances = 3;
+
 void nop() {}
 
 }  // namespace
@@ -147,6 +151,35 @@ DistributedExecutionGeneratorTestRunner::DistributedExecutionGeneratorTestRunner
   }
 }
 
+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 @@ void DistributedExecutionGeneratorTestRunner::runTestCase(
     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());
 

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/5e0c32ac/query_optimizer/tests/DistributedExecutionGeneratorTestRunner.hpp
----------------------------------------------------------------------
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 @@ class DistributedExecutionGeneratorTestRunner : public TextBasedTestRunner {
    */
   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,

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/5e0c32ac/query_optimizer/tests/execution_generator/CMakeLists.txt
----------------------------------------------------------------------
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 @@ add_test(quickstep_queryoptimizer_tests_executiongenerator_update
          "${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}/Select)
 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)