You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by sp...@apache.org on 2016/12/11 17:46:07 UTC

[44/51] [abbrv] [partial] incubator-quickstep git commit: remove c++ files

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/LineReader.cpp
----------------------------------------------------------------------
diff --git a/cli/LineReader.cpp b/cli/LineReader.cpp
deleted file mode 100644
index 002727d..0000000
--- a/cli/LineReader.cpp
+++ /dev/null
@@ -1,243 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#include "cli/LineReader.hpp"
-
-#include <algorithm>
-#include <cctype>
-#include <string>
-
-using std::ispunct;
-using std::size_t;
-using std::string;
-
-namespace quickstep {
-
-std::string LineReader::getNextCommand() {
-  string multiline_buffer(leftover_);
-
-  // Whether we are continuing to read a command across multiple lines of
-  // input.
-  bool continuing = false;
-
-  // The state of our micro command-scanner. Either normal SQL (where the whole
-  // command terminates with a semicolon), various types of quoted strings
-  // (which terminate with a closing quote, putting the state back to normal),
-  // or SQL comments (which terminate with a newline, putting the state back to
-  // normal).
-  LineState line_state = kNormal;
-
-  // The position we are scanning the multiline_buffer from.
-  size_t scan_position = 0;
-  // The position of a special character, which might terminate a statement or
-  // signify a change in the line_state.
-  for (;;) {
-    size_t special_char_location = string::npos;
-    switch (line_state) {
-      case kNormal:
-        // A semicolon to end the SQL command, or any character which might
-        // put us into a different mode.
-        special_char_location = multiline_buffer.find_first_of(";'\"-eE.\\", scan_position);
-        break;
-      case kSingleQuote:
-        // A single quote which ends the string (note that two successive
-        // single-quotes in a string, which the lexer will make into one
-        // single-quote, will still be fine here: we will go into kNormal
-        // and then, on the next iteration, immediately back into
-        // kSingleQuote).
-        special_char_location = multiline_buffer.find_first_of('\'', scan_position);
-        break;
-      case kSingleQuoteWithEscape:
-        // A single quote which ends the string, or the beginning of an escape
-        // sequence \' which does not end the string.
-        special_char_location = multiline_buffer.find_first_of("'\\", scan_position);
-        break;
-      case kDoubleQuote:
-        // A double quote which ends the string. As above, two successive
-        // double-quotes will still get handled properly.
-        special_char_location = multiline_buffer.find_first_of('"', scan_position);
-        break;
-      case kDoubleQuoteWithEscape:
-        // A single quote which ends the string, or the beginning of an escape
-        // sequence \" which does not end the string.
-        special_char_location = multiline_buffer.find_first_of("\"\\", scan_position);
-        break;
-      case kComment:
-      case kCommand:  // Fall Through.
-        // A newline which ends the command and comment and resumes normal SQL parsing.
-        special_char_location = multiline_buffer.find_first_of('\n', scan_position);
-        break;
-    }
-
-    if (special_char_location == string::npos) {
-      // No special character found in the buffer. Get some more input.
-      scan_position = multiline_buffer.size();
-      if (!getMoreInput(&multiline_buffer, &continuing)) {
-        return string("");
-      }
-    } else {
-      switch (line_state) {
-        case kNormal:
-          // In kNormal, we may end the SQL command or switch into one of the
-          // other states.
-          switch (multiline_buffer[special_char_location]) {
-            case ';':
-              // Command finished. Return it.
-              leftover_ = multiline_buffer.substr(special_char_location + 1);
-              // Clear 'leftover_' if it is blank to avoid counting the remaining
-              // lines in the previous command in computing the positions of each parser node.
-              if (std::all_of(leftover_.begin(), leftover_.end(), ::isspace)) {
-                leftover_.clear();
-              }
-              return multiline_buffer.substr(0, special_char_location + 1);
-            case '\'':
-              // Starting a single-quote string.
-              line_state = kSingleQuote;
-              scan_position = special_char_location + 1;
-              break;
-            case '"':
-              // Starting a double-quote string.
-              line_state = kDoubleQuote;
-              scan_position = special_char_location + 1;
-              break;
-            case '-':
-              // Possibly starting a comment. We must peek ahead to the next
-              // character to be sure.
-              if (multiline_buffer.size() > special_char_location + 1) {
-                if (multiline_buffer[special_char_location + 1] == '-') {
-                  line_state = kComment;
-                  scan_position = special_char_location + 2;
-                } else {
-                  // False alarm.
-                  scan_position = special_char_location + 1;
-                }
-              } else {
-                // No next character is available. Get more input and try
-                // again.
-                scan_position = special_char_location;
-                if (!getMoreInput(&multiline_buffer, &continuing)) {
-                  return string("");
-                }
-              }
-              break;
-            case 'e':
-            case 'E':
-              // e' or E' begins a quoted string with escape sequences. First,
-              // check that the e or E either begins the string or is
-              // immediately preceded by whitespace or punctuation.
-              if ((special_char_location == 0)
-                  || ::isspace(multiline_buffer[special_char_location - 1])
-                  || ::ispunct(multiline_buffer[special_char_location - 1])) {
-                // Peek ahead to see if the next character is a single-quote.
-                if (multiline_buffer.size() > special_char_location + 1) {
-                  if (multiline_buffer[special_char_location + 1] == '\'') {
-                    line_state = kSingleQuoteWithEscape;
-                    scan_position = special_char_location + 2;
-                  } else if (multiline_buffer[special_char_location + 1] == '\"') {
-                    line_state = kDoubleQuoteWithEscape;
-                    scan_position = special_char_location + 2;
-                  } else {
-                    // False alarm. Just a normal character.
-                    scan_position = special_char_location + 1;
-                  }
-                } else {
-                  // Can't peek ahead yet. Get more input and re-scan from
-                  // current position.
-                  scan_position = special_char_location;
-                  if (!getMoreInput(&multiline_buffer, &continuing)) {
-                    return string("");
-                  }
-                }
-              } else {
-                scan_position = special_char_location + 1;
-              }
-              break;
-            case '.':
-            case '\\':  //  Fall Through.
-              // If the dot or forward slash begins the line, begin a command search.
-              if (scan_position == 0) {
-                line_state = kCommand;
-              } else {
-                // This is a regular character, so skip over it.
-                scan_position = special_char_location + 1;
-              }
-              break;
-            default:
-              FATAL_ERROR("Unexpected special character in LineReader::getNextCommand()");
-          }
-          break;
-        case kSingleQuote:
-        case kDoubleQuote:
-        case kComment:
-          // Reached the terminal character for this state. Go back to normal
-          // SQL mode.
-          line_state = kNormal;
-          scan_position = special_char_location + 1;
-          break;
-        case kSingleQuoteWithEscape:
-          if (multiline_buffer[special_char_location] == '\'') {
-            line_state = kNormal;
-            scan_position = special_char_location + 1;
-          } else {
-            // Skip past an escape character.
-            scan_position = special_char_location + 2;
-          }
-          break;
-        case kDoubleQuoteWithEscape:
-          if (multiline_buffer[special_char_location] == '\"') {
-            line_state = kNormal;
-            scan_position = special_char_location + 1;
-          } else {
-            // Skip past an escape character.
-            scan_position = special_char_location + 2;
-          }
-          break;
-        case kCommand:
-          if (multiline_buffer[special_char_location] == '\n') {
-            // Command finished. Return it.
-            leftover_ = multiline_buffer.substr(special_char_location + 1);
-            // Clear 'leftover_' if it is blank to avoid counting the remaining
-            // lines in the previous command in computing the positions of each parser node.
-            if (std::all_of(leftover_.begin(), leftover_.end(), ::isspace)) {
-              leftover_.clear();
-            }
-            return multiline_buffer.substr(0, special_char_location + 1);
-          }
-          break;
-      }
-    }
-  }
-}
-
-bool LineReader::getMoreInput(std::string *input_buffer, bool *continuing) {
-  string nextline = getLineInternal(*continuing);
-  if (nextline.empty()) {
-    return false;
-  } else {
-    if (*continuing
-        || !std::all_of(nextline.begin(), nextline.end(), ::isspace)) {
-      // Don't show the continuing prompt if a blank line was entered.
-      *continuing = true;
-    }
-    input_buffer->append(nextline);
-    return true;
-  }
-}
-
-}  // namespace quickstep

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/LineReader.hpp
----------------------------------------------------------------------
diff --git a/cli/LineReader.hpp b/cli/LineReader.hpp
deleted file mode 100644
index c7c073f..0000000
--- a/cli/LineReader.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#ifndef QUICKSTEP_CLI_LINE_READER_HPP_
-#define QUICKSTEP_CLI_LINE_READER_HPP_
-
-#include <string>
-
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-
-/** \addtogroup CLI
- *  @{
- */
-
-/**
- * @brief An interface for reading user input from command lines.
- **/
-class LineReader {
- public:
-  /**
-   * @brief Constructor.
-   *
-   * @param default_prompt The default command prompt.
-   * @param continue_prompt The prompt given when a command extends over more
-   *        than one line.
-   **/
-  LineReader(const std::string &default_prompt,
-             const std::string &continue_prompt)
-      : default_prompt_(default_prompt), continue_prompt_(continue_prompt) {
-  }
-
-  /**
-   * @brief Virtual destructor.
-   **/
-  virtual ~LineReader() {
-  }
-
-  /**
-   * @brief Obtain the next full SQL command from user input.
-   *
-   * @return The next user-inputted command.
-   **/
-  std::string getNextCommand();
-
- protected:
-  /**
-   * @brief Get the next newline-terminated line from input.
-   *
-   * @param continuing True if continuing a command from a previous line, false
-   *        otherwise.
-   * @return The next line of input.
-   **/
-  virtual std::string getLineInternal(const bool continuing) = 0;
-
-  const std::string default_prompt_;
-  const std::string continue_prompt_;
-  std::string leftover_;
-
- private:
-  enum LineState {
-    kNormal,
-    kSingleQuote,
-    kSingleQuoteWithEscape,
-    kDoubleQuote,
-    kDoubleQuoteWithEscape,
-    kComment,
-    kCommand
-  };
-
-  bool getMoreInput(std::string *input_buffer, bool *continuing);
-
-  DISALLOW_COPY_AND_ASSIGN(LineReader);
-};
-
-/** @} */
-
-}  // namespace quickstep
-
-#endif  // QUICKSTEP_CLI_LINE_READER_HPP_

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/LineReaderDumb.cpp
----------------------------------------------------------------------
diff --git a/cli/LineReaderDumb.cpp b/cli/LineReaderDumb.cpp
deleted file mode 100644
index 36edf73..0000000
--- a/cli/LineReaderDumb.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#include "cli/LineReaderDumb.hpp"
-
-#include <cstddef>
-#include <cstdio>
-#include <string>
-
-using std::feof;
-using std::fflush;
-using std::fgetc;
-using std::fgets;
-using std::printf;
-using std::string;
-using std::ungetc;
-
-namespace quickstep {
-
-namespace {
-static constexpr std::size_t kReadBufferSize = 1024;
-}  // namespace
-
-LineReaderDumb::LineReaderDumb(const string &default_prompt, const string &continue_prompt)
-    : LineReader(default_prompt, continue_prompt) {
-}
-
-std::string LineReaderDumb::getLineInternal(const bool continuing) {
-  if (feof(stdin)) {
-    printf("\n");
-    return string("");
-  }
-
-  printf("%s", continuing ? continue_prompt_.c_str() : default_prompt_.c_str());
-  fflush(stdout);
-
-  string line;
-  char read_buffer[kReadBufferSize];
-  while (fgets(read_buffer, sizeof(read_buffer), stdin) != nullptr) {
-    line.append(read_buffer);
-    if ((!line.empty()) && (line.back() == '\n')) {
-      return line;
-    } else {
-      if (feof(stdin)) {
-        break;
-      }
-      const int next_char = fgetc(stdin);
-      if (next_char == EOF) {
-        break;
-      } else {
-        ungetc(next_char, stdin);
-      }
-    }
-  }
-
-  // The above while loop terminated because fgets() hit EOF before it got to
-  // a newline.
-  printf("\n");
-  return string("");
-}
-
-}  // namespace quickstep

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/LineReaderDumb.hpp
----------------------------------------------------------------------
diff --git a/cli/LineReaderDumb.hpp b/cli/LineReaderDumb.hpp
deleted file mode 100644
index 080268a..0000000
--- a/cli/LineReaderDumb.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#ifndef QUICKSTEP_CLI_LINE_READER_DUMB_HPP_
-#define QUICKSTEP_CLI_LINE_READER_DUMB_HPP_
-
-#include <string>
-
-#include "cli/LineReader.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-
-/** \addtogroup CLI
- *  @{
- */
-
-/**
- * @brief An implementation of LineReader that uses cstdio and doesn't support
- *        history or command editing.
- **/
-class LineReaderDumb : public LineReader {
- public:
-  LineReaderDumb(const std::string &default_prompt,
-                 const std::string &continue_prompt);
-
- protected:
-  std::string getLineInternal(const bool continuing) override;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(LineReaderDumb);
-};
-
-/** @} */
-
-}  // namespace quickstep
-
-#endif  // QUICKSTEP_CLI_LINE_READER_DUMB_HPP_

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/LineReaderLineNoise.cpp
----------------------------------------------------------------------
diff --git a/cli/LineReaderLineNoise.cpp b/cli/LineReaderLineNoise.cpp
deleted file mode 100644
index 9c3650e..0000000
--- a/cli/LineReaderLineNoise.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#include "cli/LineReaderLineNoise.hpp"
-
-#include <algorithm>
-#include <cctype>
-#include <cstdlib>
-#include <string>
-#include <utility>
-
-#include "third_party/linenoise/linenoise.h"
-
-namespace quickstep {
-
-LineReaderLineNoise::LineReaderLineNoise(const std::string &default_prompt,
-                                         const std::string &continue_prompt)
-    : LineReader(default_prompt, continue_prompt) {
-}
-
-std::string LineReaderLineNoise::getLineInternal(const bool continuing) {
-  const char *prompt;
-  if (continuing) {
-    prompt = continue_prompt_.c_str();
-  } else {
-    prompt = default_prompt_.c_str();
-  }
-  char *input_line;
-
-  if ((input_line = linenoise(prompt)) != nullptr) {
-    std::string retval(input_line);
-    if (continuing
-        || !std::all_of(retval.begin(), retval.end(), ::isspace)) {
-      // Don't add a blank line that's not part of a command to history.
-      linenoiseHistoryAdd(input_line);
-    }
-    std::free(input_line);
-    return retval;
-  } else {
-    return std::string("");
-  }
-}
-
-}  // namespace quickstep

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/LineReaderLineNoise.hpp
----------------------------------------------------------------------
diff --git a/cli/LineReaderLineNoise.hpp b/cli/LineReaderLineNoise.hpp
deleted file mode 100644
index ec256f6..0000000
--- a/cli/LineReaderLineNoise.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#ifndef QUICKSTEP_CLI_LINE_READER_LINE_NOISE_HPP_
-#define QUICKSTEP_CLI_LINE_READER_LINE_NOISE_HPP_
-
-#include <string>
-
-#include "cli/LineReader.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-
-/** \addtogroup CLI
- *  @{
- */
-
-/**
- * @brief An implementation of LineReader that uses linenoise to provide
- *        command-history and editing support.
- **/
-class LineReaderLineNoise : public LineReader {
- public:
-  LineReaderLineNoise(const std::string &default_prompt,
-                      const std::string &continue_prompt);
-
-  ~LineReaderLineNoise() override {
-  }
-
- protected:
-  std::string getLineInternal(const bool continuing) override;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(LineReaderLineNoise);
-};
-
-/** @} */
-
-}  // namespace quickstep
-
-#endif  // QUICKSTEP_CLI_LINE_READER_LINE_NOISE_HPP_

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/PrintToScreen.cpp
----------------------------------------------------------------------
diff --git a/cli/PrintToScreen.cpp b/cli/PrintToScreen.cpp
deleted file mode 100644
index 7d06474..0000000
--- a/cli/PrintToScreen.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#include "cli/PrintToScreen.hpp"
-
-#include <cstddef>
-#include <cstdio>
-#include <cmath>
-#include <memory>
-#include <vector>
-
-#include "catalog/CatalogAttribute.hpp"
-#include "catalog/CatalogRelation.hpp"
-#include "storage/StorageBlock.hpp"
-#include "storage/StorageBlockInfo.hpp"
-#include "storage/StorageManager.hpp"
-#include "storage/TupleIdSequence.hpp"
-#include "storage/TupleStorageSubBlock.hpp"
-#include "types/IntType.hpp"
-#include "types/Type.hpp"
-#include "types/TypedValue.hpp"
-#include "utility/Macros.hpp"
-
-#include "gflags/gflags.h"
-
-using std::fprintf;
-using std::fputc;
-using std::size_t;
-using std::vector;
-
-namespace quickstep {
-
-DEFINE_bool(printing_enabled, true,
-            "If true, print query results to screen normally. If false, skip "
-            "printing output (e.g. for benchmarking).");
-
-int PrintToScreen::GetNumberOfDigits(int number) {
-  if (number > 0) {
-    return static_cast<int>(log10 (number)) + 1;
-  } else if (number < 0) {
-    return static_cast<int>(log10 ( abs(number) )) + 2;
-  } else {
-    return 1;
-  }
-}
-
-void PrintToScreen::PrintRelation(const CatalogRelation &relation,
-                                  StorageManager *storage_manager,
-                                  FILE *out) {
-  if (!FLAGS_printing_enabled) {
-    return;
-  }
-
-  vector<int> column_widths;
-  column_widths.reserve(relation.size());
-
-  for (CatalogRelation::const_iterator attr_it = relation.begin();
-       attr_it != relation.end();
-       ++attr_it) {
-    // Printed column needs to be wide enough to print:
-    //   1. The attribute name (in the printed "header").
-    //   2. Any value of the attribute's Type.
-    //   3. If the attribute's Type is nullable, the 4-character string "NULL".
-    // We pick the largest of these 3 widths as the column width.
-    int column_width = static_cast<int>(attr_it->getDisplayName().length());
-    column_width = column_width < attr_it->getType().getPrintWidth()
-                   ? attr_it->getType().getPrintWidth()
-                   : column_width;
-    column_width = attr_it->getType().isNullable() && (column_width < 4)
-                   ? 4
-                   : column_width;
-    column_widths.push_back(column_width);
-  }
-
-  printHBar(column_widths, out);
-
-  fputc('|', out);
-  vector<int>::const_iterator width_it = column_widths.begin();
-  CatalogRelation::const_iterator attr_it = relation.begin();
-  for (; width_it != column_widths.end(); ++width_it, ++attr_it) {
-    fprintf(out,
-            "%-*s|",
-            *width_it,
-            attr_it->getDisplayName().c_str());
-  }
-  fputc('\n', out);
-
-  printHBar(column_widths, out);
-
-  std::vector<block_id> blocks = relation.getBlocksSnapshot();
-  for (const block_id current_block_id : blocks) {
-    BlockReference block = storage_manager->getBlock(current_block_id, relation);
-    const TupleStorageSubBlock &tuple_store = block->getTupleStorageSubBlock();
-
-    if (tuple_store.isPacked()) {
-      for (tuple_id tid = 0; tid <= tuple_store.getMaxTupleID(); ++tid) {
-        printTuple(tuple_store, tid, column_widths, out);
-      }
-    } else {
-      std::unique_ptr<TupleIdSequence> existence_map(tuple_store.getExistenceMap());
-      for (tuple_id tid : *existence_map) {
-        printTuple(tuple_store, tid, column_widths, out);
-      }
-    }
-  }
-
-  printHBar(column_widths, out);
-}
-
-void PrintToScreen::printHBar(const vector<int> &column_widths,
-                              FILE *out) {
-  fputc('+', out);
-  for (const int width : column_widths) {
-    for (int i = 0; i < width; ++i) {
-      fputc('-', out);
-    }
-    fputc('+', out);
-  }
-  fputc('\n', out);
-}
-
-void PrintToScreen::printTuple(const TupleStorageSubBlock &tuple_store,
-                               const tuple_id tid,
-                               const vector<int> &column_widths,
-                               FILE *out) {
-  DEBUG_ASSERT(tuple_store.hasTupleWithID(tid));
-  fputc('|', out);
-
-  const CatalogRelationSchema &relation = tuple_store.getRelation();
-  vector<int>::const_iterator width_it = column_widths.begin();
-  CatalogRelation::const_iterator attr_it = relation.begin();
-  for (; attr_it != relation.end(); ++attr_it, ++width_it) {
-    TypedValue value(tuple_store.getAttributeValueTyped(tid, attr_it->getID()));
-    if (value.isNull()) {
-      fprintf(out,
-              "%*s",
-              *width_it,
-              "NULL");
-    } else {
-      attr_it->getType().printValueToFile(value, out, *width_it);
-    }
-
-    fputc('|', out);
-  }
-  fputc('\n', out);
-}
-
-std::size_t PrintToScreen::GetNumTuplesInRelation(
-    const CatalogRelation &relation, StorageManager *storage_manager) {
-  const std::vector<block_id> &blocks = relation.getBlocksSnapshot();
-  std::size_t total_num_tuples = 0;
-  for (block_id block : blocks) {
-    total_num_tuples +=
-        storage_manager->getBlock(block, relation)->getNumTuples();
-  }
-  return total_num_tuples;
-}
-
-void PrintToScreen::PrintOutputSize(const CatalogRelation &relation,
-                                    StorageManager *storage_manager,
-                                    FILE *out) {
-  const std::size_t num_rows = GetNumTuplesInRelation(relation, storage_manager);
-  fprintf(out,
-          "(%lu %s)\n",
-          num_rows,
-          (num_rows == 1) ? "row" : "rows");
-}
-
-}  // namespace quickstep

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/PrintToScreen.hpp
----------------------------------------------------------------------
diff --git a/cli/PrintToScreen.hpp b/cli/PrintToScreen.hpp
deleted file mode 100644
index 2b5fd7e..0000000
--- a/cli/PrintToScreen.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#ifndef QUICKSTEP_CLI_PRINT_TO_SCREEN_HPP_
-#define QUICKSTEP_CLI_PRINT_TO_SCREEN_HPP_
-
-#include <cstdio>
-#include <vector>
-
-#include "storage/StorageBlockInfo.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-
-class CatalogRelation;
-class StorageManager;
-class TupleStorageSubBlock;
-
-/** \addtogroup CLI
- *  @{
- */
-
-/**
- * @brief All static methods which print all of the tuples in a relation to
- *        a FILE* stream.
- **/
-class PrintToScreen {
- public:
-  static void PrintRelation(const CatalogRelation &relation,
-                            StorageManager *storage_manager,
-                            FILE *out);
-
-  static void printHBar(const std::vector<int> &column_widths,
-                        FILE *out);
-
-  /**
-   * @brief Get the total number of tuples in the given relation.
-   *
-   * @param relation The given relation.
-   * @param storage_manager The storage manager.
-   *
-   * @return The total number of tuples in the relation.
-   **/
-  static std::size_t GetNumTuplesInRelation(const CatalogRelation &relation,
-                                            StorageManager *storage_manager);
-
-  /**
-   * @brief Print the size of the output (i.e. number of rows in the relation).
-   *
-   * @param relation The given relation.
-   * @param storage_manager The storage manager.
-   * @param out The output stream.
-   **/
-  static void PrintOutputSize(const CatalogRelation &relation,
-                              StorageManager *storage_manager,
-                              FILE *out);
-
-  /**
-   * @brief Return the number of digits in a number
-   *
-   * @param number The input number.
-   * @param out The number of digits in the input number.
-   **/
-  static int GetNumberOfDigits(int number);
-
- private:
-  // Undefined default constructor. Class is all-static and should not be
-  // instantiated.
-  PrintToScreen();
-
-  static void printTuple(const TupleStorageSubBlock &tuple_store,
-                         const tuple_id tid,
-                         const std::vector<int> &column_widths,
-                         FILE *out);
-
-  DISALLOW_COPY_AND_ASSIGN(PrintToScreen);
-};
-
-/** @} */
-
-}  // namespace quickstep
-
-#endif  // QUICKSTEP_CLI_PRINT_TO_SCREEN_HPP_

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/QuickstepCli.cpp
----------------------------------------------------------------------
diff --git a/cli/QuickstepCli.cpp b/cli/QuickstepCli.cpp
deleted file mode 100644
index 656786a..0000000
--- a/cli/QuickstepCli.cpp
+++ /dev/null
@@ -1,451 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-/* A standalone command-line interface to QuickStep */
-
-#include <chrono>
-#include <cstddef>
-#include <cstdio>
-#include <exception>
-#include <memory>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "cli/CliConfig.h"  // For QUICKSTEP_USE_LINENOISE, QUICKSTEP_ENABLE_GOOGLE_PROFILER.
-
-#include "cli/CommandExecutor.hpp"
-#include "cli/DropRelation.hpp"
-
-#ifdef QUICKSTEP_USE_LINENOISE
-#include "cli/LineReaderLineNoise.hpp"
-typedef quickstep::LineReaderLineNoise LineReaderImpl;
-#else
-#include "cli/LineReaderDumb.hpp"
-typedef quickstep::LineReaderDumb LineReaderImpl;
-#endif
-
-#ifdef QUICKSTEP_ENABLE_GOOGLE_PROFILER
-#include <gperftools/profiler.h>
-#endif
-
-#include "cli/DefaultsConfigurator.hpp"
-#include "cli/Flags.hpp"
-#include "cli/InputParserUtil.hpp"
-#include "cli/PrintToScreen.hpp"
-#include "parser/ParseStatement.hpp"
-#include "parser/SqlParserWrapper.hpp"
-#include "query_execution/ForemanSingleNode.hpp"
-#include "query_execution/QueryExecutionTypedefs.hpp"
-#include "query_execution/QueryExecutionUtil.hpp"
-#include "query_execution/Worker.hpp"
-#include "query_execution/WorkerDirectory.hpp"
-#include "query_optimizer/QueryHandle.hpp"
-#include "query_optimizer/QueryProcessor.hpp"
-#include "storage/StorageConfig.h"  // For QUICKSTEP_HAVE_FILE_MANAGER_HDFS.
-
-#ifdef QUICKSTEP_HAVE_FILE_MANAGER_HDFS
-#include "storage/FileManagerHdfs.hpp"
-#endif
-
-#include "storage/PreloaderThread.hpp"
-#include "storage/StorageConstants.hpp"
-#include "storage/StorageManager.hpp"
-#include "threading/ThreadIDBasedMap.hpp"
-#include "utility/ExecutionDAGVisualizer.hpp"
-#include "utility/Macros.hpp"
-#include "utility/PtrVector.hpp"
-#include "utility/SqlError.hpp"
-#include "utility/StringUtil.hpp"
-
-#include "gflags/gflags.h"
-
-#include "glog/logging.h"
-
-#include "tmb/id_typedefs.h"
-#include "tmb/message_bus.h"
-
-namespace quickstep {
-class CatalogRelation;
-}
-
-using std::fflush;
-using std::fprintf;
-using std::printf;
-using std::string;
-using std::vector;
-
-using quickstep::CatalogRelation;
-using quickstep::DefaultsConfigurator;
-using quickstep::DropRelation;
-using quickstep::FLAGS_num_workers;
-using quickstep::FLAGS_storage_path;
-using quickstep::ForemanSingleNode;
-using quickstep::InputParserUtil;
-using quickstep::MessageBusImpl;
-using quickstep::ParseResult;
-using quickstep::ParseStatement;
-using quickstep::PrintToScreen;
-using quickstep::PtrVector;
-using quickstep::QueryExecutionUtil;
-using quickstep::QueryHandle;
-using quickstep::QueryProcessor;
-using quickstep::SqlParserWrapper;
-using quickstep::Worker;
-using quickstep::WorkerDirectory;
-using quickstep::kAdmitRequestMessage;
-using quickstep::kCatalogFilename;
-using quickstep::kPoisonMessage;
-using quickstep::kWorkloadCompletionMessage;
-
-using tmb::client_id;
-
-namespace quickstep {
-
-DEFINE_bool(preload_buffer_pool, false,
-            "If true, pre-load all known blocks into buffer pool before "
-            "accepting queries (should also set --buffer_pool_slots to be "
-            "large enough to accomodate the entire database).");
-DEFINE_string(worker_affinities, "",
-              "A comma-separated list of CPU IDs to pin worker threads to "
-              "(leaving this empty will cause all worker threads to inherit "
-              "the affinity mask of the Quickstep process, which typically "
-              "means that they will all be runable on any CPU according to "
-              "the kernel's own scheduling policy).");
-DEFINE_bool(initialize_db, false, "If true, initialize a database.");
-DEFINE_bool(print_query, false,
-            "Print each input query statement. This is useful when running a "
-            "large number of queries in a batch.");
-DEFINE_string(profile_file_name, "",
-              "If nonempty, enable profiling using GOOGLE CPU Profiler, and write "
-              "its output to the given file name. This flag has no effect if "
-              "ENABLE_GOOGLE_PROFILER CMake flag was not set during build. "
-              "The profiler only starts collecting samples after the first query, "
-              "so that it runs against a warm buffer pool and caches. If you want to profile "
-              "everything, including the first query run, set the "
-              "environment variable CPUPROFILE instead of passing this flag.");
-              // Here's a detailed explanation of why we skip the first query run
-              // during profiling:
-              // Unless you\u2019ve preloaded the buffer pool (which is not always a good
-              // idea), the first run of the query results in disk I/O and other overhead
-              // that significantly skews the profiling results. It\u2019s the same reason we don\u2019t
-              // include the first run time in our benchmarking: when profiling query
-              // execution, it makes more sense to get numbers using a warm buffer pool and
-              // warm caches. This is not *always* the right thing to do: it\u2019s obviously
-              // wrong for profiling the TextScan operator. In those cases, you might want
-              // to put in your own Profiler probes (just follow the start/stop pattern used
-              // in this file) or just run quickstep with the CPUPROFILE environment variable
-              // set (as per gperftools documentation) to get the full profile for the
-              // entire execution.
-              // To put things in perspective, the first run is, in my experiments, about 5-10
-              // times more expensive than the average run. That means the query needs to be
-              // run at least a hundred times to make the impact of the first run small (< 5 %).
-
-DECLARE_bool(profile_and_report_workorder_perf);
-DECLARE_bool(visualize_execution_dag);
-
-}  // namespace quickstep
-
-int main(int argc, char* argv[]) {
-  google::InitGoogleLogging(argv[0]);
-  gflags::ParseCommandLineFlags(&argc, &argv, true);
-
-  printf("Starting Quickstep with %d worker thread(s) and a %.2f GB buffer pool.\n",
-         FLAGS_num_workers,
-         (static_cast<double>(quickstep::FLAGS_buffer_pool_slots) * quickstep::kSlotSizeBytes)/quickstep::kAGigaByte);
-
-#ifdef QUICKSTEP_HAVE_FILE_MANAGER_HDFS
-  if (quickstep::FLAGS_use_hdfs) {
-    LOG(INFO) << "Using HDFS as the default persistent storage, with namenode at "
-              << quickstep::FLAGS_hdfs_namenode_host << ":"
-              << quickstep::FLAGS_hdfs_namenode_port << " and block replication factor "
-              << quickstep::FLAGS_hdfs_num_replications << "\n";
-  }
-#endif
-
-  // Initialize the thread ID based map here before the Foreman and workers are
-  // constructed because the initialization isn't thread safe.
-  quickstep::ClientIDMap::Instance();
-
-  MessageBusImpl bus;
-  bus.Initialize();
-
-  // The TMB client id for the main thread, used to kill workers at the end.
-  const client_id main_thread_client_id = bus.Connect();
-  bus.RegisterClientAsSender(main_thread_client_id, kAdmitRequestMessage);
-  bus.RegisterClientAsSender(main_thread_client_id, kPoisonMessage);
-  bus.RegisterClientAsReceiver(main_thread_client_id, kWorkloadCompletionMessage);
-
-  quickstep::StorageManager storage_manager(FLAGS_storage_path);
-
-  string catalog_path(FLAGS_storage_path);
-  catalog_path.append(kCatalogFilename);
-  if (quickstep::FLAGS_initialize_db) {  // Initialize the database
-    DefaultsConfigurator::InitializeDefaultDatabase(FLAGS_storage_path, catalog_path);
-  }
-
-  // Setup QueryProcessor, including CatalogDatabase.
-  std::unique_ptr<QueryProcessor> query_processor;
-  try {
-    query_processor = std::make_unique<QueryProcessor>(std::move(catalog_path));
-  } catch (const std::exception &e) {
-    LOG(FATAL) << "FATAL ERROR DURING STARTUP: "
-               << e.what()
-               << "\nIf you intended to create a new database, "
-               << "please use the \"-initialize_db=true\" command line option.";
-  } catch (...) {
-    LOG(FATAL) << "NON-STANDARD EXCEPTION DURING STARTUP";
-  }
-
-  // Parse the CPU affinities for workers and the preloader thread, if enabled
-  // to warm up the buffer pool.
-  const vector<int> worker_cpu_affinities =
-      InputParserUtil::ParseWorkerAffinities(FLAGS_num_workers,
-                                             quickstep::FLAGS_worker_affinities);
-
-  const std::size_t num_numa_nodes_system = DefaultsConfigurator::GetNumNUMANodes();
-
-  if (quickstep::FLAGS_preload_buffer_pool) {
-    std::chrono::time_point<std::chrono::steady_clock> preload_start, preload_end;
-    preload_start = std::chrono::steady_clock::now();
-    printf("Preloading the buffer pool ... ");
-    fflush(stdout);
-    quickstep::PreloaderThread preloader(*query_processor->getDefaultDatabase(),
-                                         &storage_manager,
-                                         worker_cpu_affinities.front());
-
-    preloader.start();
-    preloader.join();
-    preload_end = std::chrono::steady_clock::now();
-    printf("in %g seconds\n",
-           std::chrono::duration<double>(preload_end - preload_start).count());
-  }
-
-  // Get the NUMA affinities for workers.
-  vector<int> cpu_numa_nodes = InputParserUtil::GetNUMANodesForCPUs();
-  if (cpu_numa_nodes.empty()) {
-    // libnuma is not present. Assign -1 as the NUMA node for every worker.
-    cpu_numa_nodes.assign(worker_cpu_affinities.size(), -1);
-  }
-
-  vector<int> worker_numa_nodes;
-  PtrVector<Worker> workers;
-  vector<client_id> worker_client_ids;
-
-  // Initialize the worker threads.
-  DCHECK_EQ(static_cast<std::size_t>(FLAGS_num_workers),
-            worker_cpu_affinities.size());
-  for (std::size_t worker_thread_index = 0;
-       worker_thread_index < worker_cpu_affinities.size();
-       ++worker_thread_index) {
-    int numa_node_id = -1;
-    if (worker_cpu_affinities[worker_thread_index] >= 0) {
-      // This worker can be NUMA affinitized.
-      numa_node_id = cpu_numa_nodes[worker_cpu_affinities[worker_thread_index]];
-    }
-    worker_numa_nodes.push_back(numa_node_id);
-
-    workers.push_back(
-        new Worker(worker_thread_index, &bus, worker_cpu_affinities[worker_thread_index]));
-    worker_client_ids.push_back(workers.back().getBusClientID());
-  }
-
-  // TODO(zuyu): Move WorkerDirectory within Shiftboss once the latter is added.
-  WorkerDirectory worker_directory(worker_cpu_affinities.size(),
-                                   worker_client_ids,
-                                   worker_numa_nodes);
-
-  ForemanSingleNode foreman(
-      main_thread_client_id,
-      &worker_directory,
-      &bus,
-      query_processor->getDefaultDatabase(),
-      &storage_manager,
-      -1,  // Don't pin the Foreman thread.
-      num_numa_nodes_system);
-
-  // Start the worker threads.
-  for (Worker &worker : workers) {
-    worker.start();
-  }
-
-  foreman.start();
-
-  LineReaderImpl line_reader("quickstep> ",
-                             "      ...> ");
-  std::unique_ptr<SqlParserWrapper> parser_wrapper(new SqlParserWrapper());
-  std::chrono::time_point<std::chrono::steady_clock> start, end;
-
-#ifdef QUICKSTEP_ENABLE_GOOGLE_PROFILER
-  bool started_profiling = false;
-#endif
-  for (;;) {
-    string *command_string = new string();
-    *command_string = line_reader.getNextCommand();
-    if (command_string->size() == 0) {
-      delete command_string;
-      break;
-    }
-
-    if (quickstep::FLAGS_print_query) {
-      printf("\n%s\n", command_string->c_str());
-    }
-
-    parser_wrapper->feedNextBuffer(command_string);
-
-    bool quitting = false;
-    // A parse error should reset the parser. This is because the thrown quickstep
-    // SqlError does not do the proper reset work of the YYABORT macro.
-    bool reset_parser = false;
-    for (;;) {
-      ParseResult result = parser_wrapper->getNextStatement();
-      const ParseStatement &statement = *result.parsed_statement;
-      if (result.condition == ParseResult::kSuccess) {
-        if (statement.getStatementType() == ParseStatement::kQuit) {
-          quitting = true;
-          break;
-        }
-
-        if (statement.getStatementType() == ParseStatement::kCommand) {
-          try {
-            quickstep::cli::executeCommand(
-                statement,
-                *(query_processor->getDefaultDatabase()),
-                main_thread_client_id,
-                foreman.getBusClientID(),
-                &bus,
-                &storage_manager,
-                query_processor.get(),
-                stdout);
-          } catch (const quickstep::SqlError &sql_error) {
-            fprintf(stderr, "%s",
-                    sql_error.formatMessage(*command_string).c_str());
-            reset_parser = true;
-            break;
-          }
-          continue;
-        }
-
-        std::unique_ptr<QueryHandle> query_handle(
-            std::make_unique<QueryHandle>(query_processor->query_id(),
-                                          main_thread_client_id,
-                                          statement.getPriority()));
-        try {
-          query_processor->generateQueryHandle(statement, query_handle.get());
-        } catch (const quickstep::SqlError &sql_error) {
-          fprintf(stderr, "%s", sql_error.formatMessage(*command_string).c_str());
-          reset_parser = true;
-          break;
-        }
-
-        DCHECK(query_handle->getQueryPlanMutable() != nullptr);
-        std::unique_ptr<quickstep::ExecutionDAGVisualizer> dag_visualizer;
-        if (quickstep::FLAGS_visualize_execution_dag) {
-          dag_visualizer.reset(
-              new quickstep::ExecutionDAGVisualizer(*query_handle->getQueryPlanMutable()));
-        }
-
-        start = std::chrono::steady_clock::now();
-        QueryExecutionUtil::ConstructAndSendAdmitRequestMessage(
-            main_thread_client_id,
-            foreman.getBusClientID(),
-            query_handle.get(),
-            &bus);
-
-        try {
-          QueryExecutionUtil::ReceiveQueryCompletionMessage(
-              main_thread_client_id, &bus);
-          end = std::chrono::steady_clock::now();
-
-          const CatalogRelation *query_result_relation = query_handle->getQueryResultRelation();
-          if (query_result_relation) {
-            PrintToScreen::PrintRelation(*query_result_relation,
-                                         &storage_manager,
-                                         stdout);
-            PrintToScreen::PrintOutputSize(
-                *query_result_relation,
-                &storage_manager,
-                stdout);
-
-            DropRelation::Drop(*query_result_relation,
-                               query_processor->getDefaultDatabase(),
-                               &storage_manager);
-          }
-
-          query_processor->saveCatalog();
-          std::chrono::duration<double, std::milli> time_ms = end - start;
-          printf("Time: %s ms\n",
-                 quickstep::DoubleToStringWithSignificantDigits(
-                     time_ms.count(), 3).c_str());
-          if (quickstep::FLAGS_profile_and_report_workorder_perf) {
-            // TODO(harshad) - Allow user specified file instead of stdout.
-            foreman.printWorkOrderProfilingResults(query_handle->query_id(),
-                                                   stdout);
-          }
-          if (quickstep::FLAGS_visualize_execution_dag) {
-            const auto &profiling_stats =
-                foreman.getWorkOrderProfilingResults(query_handle->query_id());
-            dag_visualizer->bindProfilingStats(profiling_stats);
-            std::cerr << "\n" << dag_visualizer->toDOT() << "\n";
-          }
-        } catch (const std::exception &e) {
-          fprintf(stderr, "QUERY EXECUTION ERROR: %s\n", e.what());
-          break;
-        }
-      } else {
-        if (result.condition == ParseResult::kError) {
-          fprintf(stderr, "%s", result.error_message.c_str());
-        }
-        reset_parser = true;
-        break;
-      }
-#ifdef QUICKSTEP_ENABLE_GOOGLE_PROFILER
-      // Profile only if profile_file_name flag is set
-      if (!started_profiling && !quickstep::FLAGS_profile_file_name.empty()) {
-        started_profiling = true;
-        ProfilerStart(quickstep::FLAGS_profile_file_name.c_str());
-      }
-#endif
-    }
-
-    if (quitting) {
-      break;
-    } else if (reset_parser) {
-      parser_wrapper.reset(new SqlParserWrapper());
-      reset_parser = false;
-    }
-  }
-
-#ifdef QUICKSTEP_ENABLE_GOOGLE_PROFILER
-  if (started_profiling) {
-    ProfilerStop();
-    ProfilerFlush();
-  }
-#endif
-
-  // Kill the foreman and workers.
-  QueryExecutionUtil::BroadcastPoisonMessage(main_thread_client_id, &bus);
-
-  for (Worker &worker : workers) {
-    worker.join();
-  }
-
-  foreman.join();
-  return 0;
-}

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/tests/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/cli/tests/CMakeLists.txt b/cli/tests/CMakeLists.txt
deleted file mode 100644
index 99fa3a3..0000000
--- a/cli/tests/CMakeLists.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-add_subdirectory(command_executor)
-
-add_executable(quickstep_cli_tests_CommandExecutorTest
-               CommandExecutorTest.cpp
-               CommandExecutorTestRunner.cpp
-               CommandExecutorTestRunner.hpp
-               "${PROJECT_SOURCE_DIR}/utility/textbased_test/TextBasedTest.cpp"
-               "${PROJECT_SOURCE_DIR}/utility/textbased_test/TextBasedTest.hpp")
-
-target_link_libraries(quickstep_cli_tests_CommandExecutorTest
-                      glog
-                      gtest
-                      gtest_main
-                      quickstep_catalog_CatalogDatabase
-                      quickstep_cli_CommandExecutor
-                      quickstep_cli_DropRelation
-                      quickstep_cli_PrintToScreen
-                      quickstep_parser_ParseStatement
-                      quickstep_parser_SqlParserWrapper
-                      quickstep_queryexecution_AdmitRequestMessage
-                      quickstep_queryexecution_ForemanSingleNode
-                      quickstep_queryexecution_QueryExecutionTypedefs
-                      quickstep_queryexecution_QueryExecutionUtil
-                      quickstep_queryexecution_Worker
-                      quickstep_queryexecution_WorkerDirectory
-                      quickstep_queryoptimizer_Optimizer
-                      quickstep_queryoptimizer_OptimizerContext
-                      quickstep_queryoptimizer_QueryHandle
-                      quickstep_queryoptimizer_tests_TestDatabaseLoader
-                      quickstep_utility_Macros
-                      quickstep_utility_MemStream
-                      quickstep_utility_SqlError
-                      quickstep_utility_TextBasedTestDriver
-                      tmb
-                      ${LIBS})

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/tests/CommandExecutorTest.cpp
----------------------------------------------------------------------
diff --git a/cli/tests/CommandExecutorTest.cpp b/cli/tests/CommandExecutorTest.cpp
deleted file mode 100644
index 6ad2183..0000000
--- a/cli/tests/CommandExecutorTest.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#include <iostream>
-#include <fstream>
-#include <memory>
-
-#include "cli/tests/CommandExecutorTestRunner.hpp"
-#include "utility/textbased_test/TextBasedTestDriver.hpp"
-
-#include "glog/logging.h"
-
-using quickstep::TextBasedTest;
-
-QUICKSTEP_GENERATE_TEXT_TEST(COMMAND_EXECUTOR_TEST);
-
-int main(int argc, char** argv) {
-  google::InitGoogleLogging(argv[0]);
-
-  if (argc < 4) {
-    LOG(ERROR) << "Must have at least 3 arguments, but " << argc - 1
-               << " are provided";
-  }
-
-  std::ifstream input_file(argv[1]);
-  CHECK(input_file.is_open()) << argv[1];
-  std::unique_ptr<quickstep::CommandExecutorTestRunner>
-      test_runner(
-          new quickstep::CommandExecutorTestRunner(argv[3]));
-  test_driver.reset(
-      new quickstep::TextBasedTestDriver(&input_file, test_runner.get()));
-  test_driver->registerOption(
-      quickstep::CommandExecutorTestRunner::kResetOption);
-
-  ::testing::InitGoogleTest(&argc, argv);
-  const int success = RUN_ALL_TESTS();
-  if (success != 0) {
-    test_driver->writeActualOutputToFile(argv[2]);
-  }
-
-  return success;
-}

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/tests/CommandExecutorTestRunner.cpp
----------------------------------------------------------------------
diff --git a/cli/tests/CommandExecutorTestRunner.cpp b/cli/tests/CommandExecutorTestRunner.cpp
deleted file mode 100644
index 41cc9da..0000000
--- a/cli/tests/CommandExecutorTestRunner.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#include "cli/tests/CommandExecutorTestRunner.hpp"
-
-#include <cstdio>
-#include <set>
-#include <string>
-#include <utility>
-
-#include "cli/CommandExecutor.hpp"
-#include "cli/DropRelation.hpp"
-#include "cli/PrintToScreen.hpp"
-#include "parser/ParseStatement.hpp"
-#include "query_execution/AdmitRequestMessage.hpp"
-#include "query_execution/ForemanSingleNode.hpp"
-#include "query_execution/QueryExecutionTypedefs.hpp"
-#include "query_optimizer/Optimizer.hpp"
-#include "query_optimizer/OptimizerContext.hpp"
-#include "query_optimizer/QueryHandle.hpp"
-#include "utility/MemStream.hpp"
-#include "utility/SqlError.hpp"
-
-#include "glog/logging.h"
-
-#include "tmb/tagged_message.h"
-
-namespace quickstep {
-
-class CatalogRelation;
-
-namespace O = ::quickstep::optimizer;
-
-const char CommandExecutorTestRunner::kResetOption[] =
-    "reset_before_execution";
-
-void CommandExecutorTestRunner::runTestCase(
-    const std::string &input, const std::set<std::string> &options,
-    std::string *output) {
-  // TODO(qzeng): Test multi-threaded query execution when we have a Sort operator.
-
-  VLOG(4) << "Test SQL(s): " << input;
-
-  if (options.find(kResetOption) != options.end()) {
-    test_database_loader_.clear();
-    test_database_loader_.createTestRelation(false /* allow_vchar */);
-    test_database_loader_.loadTestRelation();
-  }
-
-  MemStream output_stream;
-  sql_parser_.feedNextBuffer(new std::string(input));
-
-  while (true) {
-    ParseResult result = sql_parser_.getNextStatement();
-    if (result.condition != ParseResult::kSuccess) {
-      if (result.condition == ParseResult::kError) {
-        *output = result.error_message;
-      }
-      break;
-    } else {
-      const ParseStatement &parse_statement = *result.parsed_statement;
-      std::printf("%s\n", parse_statement.toString().c_str());
-      try {
-        if (parse_statement.getStatementType() == ParseStatement::kCommand) {
-          quickstep::cli::executeCommand(
-              *result.parsed_statement,
-              *(test_database_loader_.catalog_database()),
-              main_thread_client_id_,
-              foreman_->getBusClientID(),
-              &bus_,
-              test_database_loader_.storage_manager(),
-              nullptr,
-              output_stream.file());
-        } else {
-          QueryHandle query_handle(0 /* query_id */, main_thread_client_id_);
-          O::OptimizerContext optimizer_context;
-
-          optimizer_.generateQueryHandle(parse_statement,
-                                         test_database_loader_.catalog_database(),
-                                         &optimizer_context,
-                                         &query_handle);
-
-          AdmitRequestMessage request_message(&query_handle);
-          TaggedMessage admit_tagged_message(
-              &request_message, sizeof(request_message), kAdmitRequestMessage);
-          QueryExecutionUtil::SendTMBMessage(&bus_,
-                                             main_thread_client_id_,
-                                             foreman_->getBusClientID(),
-                                             std::move(admit_tagged_message));
-
-          // Receive workload completion message from Foreman.
-          const AnnotatedMessage annotated_msg =
-              bus_.Receive(main_thread_client_id_, 0, true);
-          const TaggedMessage &tagged_message = annotated_msg.tagged_message;
-          DCHECK_EQ(kWorkloadCompletionMessage, tagged_message.message_type());
-          const CatalogRelation *query_result_relation = query_handle.getQueryResultRelation();
-          if (query_result_relation) {
-            PrintToScreen::PrintRelation(*query_result_relation,
-                                         test_database_loader_.storage_manager(),
-                                         output_stream.file());
-            DropRelation::Drop(*query_result_relation,
-                               test_database_loader_.catalog_database(),
-                               test_database_loader_.storage_manager());
-          }
-        }
-      } catch (const SqlError &error) {
-        *output = error.formatMessage(input);
-        break;
-      }
-    }
-  }
-
-  if (output->empty()) {
-    *output = output_stream.str();
-  }
-}
-
-}  // namespace quickstep

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/tests/CommandExecutorTestRunner.hpp
----------------------------------------------------------------------
diff --git a/cli/tests/CommandExecutorTestRunner.hpp b/cli/tests/CommandExecutorTestRunner.hpp
deleted file mode 100644
index 83c5a9a..0000000
--- a/cli/tests/CommandExecutorTestRunner.hpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#ifndef QUICKSTEP_CLI_TESTS_COMMAND_EXECUTOR_TEST_RUNNER_HPP_
-#define QUICKSTEP_CLI_TESTS_COMMAND_EXECUTOR_TEST_RUNNER_HPP_
-
-#include <memory>
-#include <set>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "parser/SqlParserWrapper.hpp"
-#include "query_execution/ForemanSingleNode.hpp"
-#include "query_execution/QueryExecutionTypedefs.hpp"
-#include "query_execution/QueryExecutionUtil.hpp"
-#include "query_execution/Worker.hpp"
-#include "query_execution/WorkerDirectory.hpp"
-#include "query_execution/WorkerMessage.hpp"
-#include "query_optimizer/Optimizer.hpp"
-#include "query_optimizer/tests/TestDatabaseLoader.hpp"
-#include "utility/Macros.hpp"
-#include "utility/textbased_test/TextBasedTestDriver.hpp"
-
-#include "tmb/id_typedefs.h"
-#include "tmb/message_bus.h"
-
-namespace quickstep {
-
-/**
- * @brief TextBasedTestRunner for testing the ExecutionGenerator.
- */
-class CommandExecutorTestRunner : public TextBasedTestRunner {
- public:
-  /**
-   * @brief If this option is enabled, recreate the entire database and
-   * repopulate the data before every test.
-   */
-  static const char kResetOption[];
-
-  /**
-   * @brief Constructor.
-   */
-  explicit CommandExecutorTestRunner(const std::string &storage_path)
-      : test_database_loader_(storage_path) {
-    test_database_loader_.createTestRelation(false /* allow_vchar */);
-    test_database_loader_.loadTestRelation();
-
-    bus_.Initialize();
-
-    main_thread_client_id_ = bus_.Connect();
-    bus_.RegisterClientAsSender(main_thread_client_id_, kAdmitRequestMessage);
-    bus_.RegisterClientAsSender(main_thread_client_id_, kPoisonMessage);
-    bus_.RegisterClientAsReceiver(main_thread_client_id_, kWorkloadCompletionMessage);
-
-    worker_.reset(new Worker(0, &bus_));
-
-    std::vector<client_id> worker_client_ids;
-    worker_client_ids.push_back(worker_->getBusClientID());
-
-    // We don't use the NUMA aware version of foreman code.
-    std::vector<int> numa_nodes;
-    numa_nodes.push_back(-1);
-
-    workers_.reset(new WorkerDirectory(1 /* number of workers */,
-                                       worker_client_ids, numa_nodes));
-    foreman_.reset(
-        new ForemanSingleNode(main_thread_client_id_,
-                              workers_.get(),
-                              &bus_,
-                              test_database_loader_.catalog_database(),
-                              test_database_loader_.storage_manager()));
-
-    foreman_->start();
-    worker_->start();
-  }
-
-  ~CommandExecutorTestRunner() {
-    QueryExecutionUtil::BroadcastPoisonMessage(main_thread_client_id_, &bus_);
-    worker_->join();
-    foreman_->join();
-  }
-
-  void runTestCase(const std::string &input,
-                   const std::set<std::string> &options,
-                   std::string *output) override;
-
- private:
-  SqlParserWrapper sql_parser_;
-  optimizer::TestDatabaseLoader test_database_loader_;
-  optimizer::Optimizer optimizer_;
-
-  tmb::client_id main_thread_client_id_;
-
-  MessageBusImpl bus_;
-  std::unique_ptr<ForemanSingleNode> foreman_;
-  std::unique_ptr<Worker> worker_;
-
-  std::unique_ptr<WorkerDirectory> workers_;
-
-  DISALLOW_COPY_AND_ASSIGN(CommandExecutorTestRunner);
-};
-
-}  // namespace quickstep
-
-#endif  //  QUICKSTEP_CLI_TESTS_COMMAND_EXECUTOR_TEST_RUNNER_HPP_

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/tests/command_executor/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/cli/tests/command_executor/CMakeLists.txt b/cli/tests/command_executor/CMakeLists.txt
deleted file mode 100644
index 0bdf865..0000000
--- a/cli/tests/command_executor/CMakeLists.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-add_test(quickstep_cli_tests_commandexecutor_d
-         "../quickstep_cli_tests_CommandExecutorTest"
-         "${CMAKE_CURRENT_SOURCE_DIR}/D.test"
-         "${CMAKE_CURRENT_BINARY_DIR}/Dt.test"
-         "${CMAKE_CURRENT_BINARY_DIR}/D/")
-add_test(quickstep_cli_tests_commandexecutor_dt
-         "../quickstep_cli_tests_CommandExecutorTest"
-         "${CMAKE_CURRENT_SOURCE_DIR}/Dt.test"
-         "${CMAKE_CURRENT_BINARY_DIR}/Dt.test"
-         "${CMAKE_CURRENT_BINARY_DIR}/Dt/")
-
-# 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}/D)
-file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Dt)
-

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/tests/command_executor/D.test
----------------------------------------------------------------------
diff --git a/cli/tests/command_executor/D.test b/cli/tests/command_executor/D.test
deleted file mode 100644
index 1b35b58..0000000
--- a/cli/tests/command_executor/D.test
+++ /dev/null
@@ -1,122 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-CREATE TABLE foo (col1 INT,
-                  col2 LONG,
-                  col3 DOUBLE,
-                  col4 FLOAT,
-                  col5 CHAR(5));
-CREATE TABLE foo2 (col1 INT,
-                   col2 LONG,
-                   col3 DOUBLE,
-                   col4 FLOAT,
-                   averyverylongcolumnnamefortest CHAR(5));
-CREATE TABLE foo3 (col1 INT,
-                   col2 LONG,
-                   col3 DOUBLE,
-                   col4 FLOAT,
-                   col5 CHAR(5));
-CREATE INDEX foo3_index_1 ON foo3 (col1) USING CSBTREE;
-CREATE TABLE foo4 (col1 INT,
-                   col2 LONG,
-                   col3 DOUBLE,
-                   col4 FLOAT,
-                   col5 CHAR(5));
-CREATE INDEX foo4_index_1 ON foo4 (col1, col2) USING CSBTREE;
-CREATE INDEX foo4_index_2 ON foo4 (col3, col4) USING CSBTREE;
-CREATE TABLE averylongtablenamethatseemstoneverend (col1 INT);
-DROP TABLE TEST;
-INSERT INTO averylongtablenamethatseemstoneverend VALUES (1);
-INSERT INTO averylongtablenamethatseemstoneverend VALUES (2);
-INSERT INTO averylongtablenamethatseemstoneverend VALUES (3);
-INSERT INTO foo values(1, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo values(2, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo values(3, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo values(4, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo values(5, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo2 values(5, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo2 values(5, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo3 values(5, 1, 1.0, 1.0, 'XYZZ');
---
-==
-\d foo
---
- Table "foo"
- Column | Type   
-+-------+--------+
- col1   | Int    
- col2   | Long   
- col3   | Double 
- col4   | Float  
- col5   | Char(5)
-==
-\d foo2
---
- Table "foo2"
- Column                         | Type   
-+-------------------------------+--------+
- col1                           | Int    
- col2                           | Long   
- col3                           | Double 
- col4                           | Float  
- averyverylongcolumnnamefortest | Char(5)
-==
-\d foo3
---
- Table "foo3"
- Column | Type   
-+-------+--------+
- col1   | Int    
- col2   | Long   
- col3   | Double 
- col4   | Float  
- col5   | Char(5)
- Indexes
-  "foo3_index_1" CSB_TREE (col1)
-==
-\d foo4
---
- Table "foo4"
- Column | Type   
-+-------+--------+
- col1   | Int    
- col2   | Long   
- col3   | Double 
- col4   | Float  
- col5   | Char(5)
- Indexes
-  "foo4_index_2" CSB_TREE (col3, col4)
-  "foo4_index_1" CSB_TREE (col1, col2)
-==
-\d
---
-       List of relations
-
- Name                                  | Type  | Blocks 
-+--------------------------------------+-------+---------+
- foo                                   | table | 1      
- foo2                                  | table | 1      
- foo3                                  | table | 1      
- foo4                                  | table | 0      
- averylongtablenamethatseemstoneverend | table | 1      
-
-==
-\d invalidtable
---
-ERROR:  Unrecognized relation invalidtable (1 : 4)
-\d invalidtable
-   ^

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cli/tests/command_executor/Dt.test
----------------------------------------------------------------------
diff --git a/cli/tests/command_executor/Dt.test b/cli/tests/command_executor/Dt.test
deleted file mode 100644
index 8d81029..0000000
--- a/cli/tests/command_executor/Dt.test
+++ /dev/null
@@ -1,79 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-CREATE TABLE foo (col1 INT,
-                  col2 LONG,
-                  col3 DOUBLE,
-                  col4 FLOAT,
-                  col5 CHAR(5));
-CREATE TABLE foo2 (col1 INT,
-                   col2 LONG,
-                   col3 DOUBLE,
-                   col4 FLOAT,
-                   averyverylongcolumnnamefortest CHAR(5));
-CREATE TABLE foo3 (col1 INT,
-                   col2 LONG,
-                   col3 DOUBLE,
-                   col4 FLOAT,
-                   col5 CHAR(5));
-CREATE TABLE foo4 (col1 INT,
-                   col2 LONG,
-                   col3 DOUBLE,
-                   col4 FLOAT,
-                   col5 CHAR(5));
-DROP TABLE TEST;
-CREATE TABLE averylongtablenamethatseemstoneverend (col1 INT);
-INSERT INTO averylongtablenamethatseemstoneverend VALUES (1);
-INSERT INTO averylongtablenamethatseemstoneverend VALUES (2);
-INSERT INTO averylongtablenamethatseemstoneverend VALUES (3);
-INSERT INTO foo values(1, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo values(2, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo values(3, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo values(4, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo values(5, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo2 values(5, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo2 values(5, 1, 1.0, 1.0, 'XYZ');
-INSERT INTO foo3 values(5, 1, 1.0, 1.0, 'XYZZ');
---
-==
-\dt
---
-       List of relations
-
- Name                                  | Type  | Blocks 
-+--------------------------------------+-------+---------+
- foo                                   | table | 1      
- foo2                                  | table | 1      
- foo3                                  | table | 1      
- foo4                                  | table | 0      
- averylongtablenamethatseemstoneverend | table | 1      
-
-==
-\dt foo
---
-       List of relations
-
- Name   | Type  | Blocks 
-+-------+-------+---------+
- foo    | table | 1      
-
-==
-\dt invalidtable
---
-ERROR:  Unrecognized relation invalidtable (1 : 5)
-\dt invalidtable
-    ^

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cmake/FindGSasl.cmake
----------------------------------------------------------------------
diff --git a/cmake/FindGSasl.cmake b/cmake/FindGSasl.cmake
deleted file mode 100644
index 28fb5b8..0000000
--- a/cmake/FindGSasl.cmake
+++ /dev/null
@@ -1,42 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# - Try to find the GNU sasl library (gsasl)
-#
-# Once done this will define
-#
-#  GSASL_FOUND - System has gnutls
-#  GSASL_INCLUDE_DIR - The gnutls include directory
-#  GSASL_LIBRARY - The libraries needed to use gnutls
-
-
-IF (GSASL_INCLUDE_DIR AND GSASL_LIBRARY)
-	# in cache already
-  SET(GSASL_FIND_QUIETLY TRUE)
-ENDIF (GSASL_INCLUDE_DIR AND GSASL_LIBRARY)
-
-FIND_PATH(GSASL_INCLUDE_DIR gsasl.h)
-
-FIND_LIBRARY(GSASL_LIBRARY gsasl)
-
-INCLUDE(FindPackageHandleStandardArgs)
-
-# handle the QUIETLY and REQUIRED arguments and set GSASL_FOUND to TRUE if
-# all listed variables are TRUE
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GSASL DEFAULT_MSG GSASL_LIBRARY GSASL_INCLUDE_DIR)
-
-MARK_AS_ADVANCED(GSASL_INCLUDE_DIR GSASL_LIBRARY)

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cmake/FindKerberos.cmake
----------------------------------------------------------------------
diff --git a/cmake/FindKerberos.cmake b/cmake/FindKerberos.cmake
deleted file mode 100644
index 11835fb..0000000
--- a/cmake/FindKerberos.cmake
+++ /dev/null
@@ -1,40 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# - Find kerberos
-# Find the native KERBEROS includes and library
-#
-#  KERBEROS_INCLUDE_DIR - where to find krb5.h, etc.
-#  KERBEROS_LIBRARY    - List of libraries when using krb5.
-#  KERBEROS_FOUND        - True if krb5 found.
-
-IF (KERBEROS_INCLUDE_DIR)
-  # Already in cache, be silent
-  SET(KERBEROS_FIND_QUIETLY TRUE)
-ENDIF (KERBEROS_INCLUDE_DIR)
-
-FIND_PATH(KERBEROS_INCLUDE_DIR krb5.h)
-
-SET(KERBEROS_NAMES krb5 k5crypto com_err)
-FIND_LIBRARY(KERBEROS_LIBRARY NAMES ${KERBEROS_NAMES})
-
-# handle the QUIETLY and REQUIRED arguments and set KERBEROS_FOUND to TRUE if
-# all listed variables are TRUE
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(KERBEROS DEFAULT_MSG KERBEROS_LIBRARY KERBEROS_INCLUDE_DIR)
-
-MARK_AS_ADVANCED(KERBEROS_LIBRARY KERBEROS_INCLUDE_DIR)

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cmake/FindLibNuma.cmake
----------------------------------------------------------------------
diff --git a/cmake/FindLibNuma.cmake b/cmake/FindLibNuma.cmake
deleted file mode 100644
index 47a65f4..0000000
--- a/cmake/FindLibNuma.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Module to find LibNuma
-find_path(LIBNUMA_INCLUDE_DIR NAMES numa.h numaif.h)
-find_library(LIBNUMA_LIBRARY NAMES numa)
-
-include (FindPackageHandleStandardArgs)
-find_package_handle_standard_args(LibNuma DEFAULT_MSG
-                                  LIBNUMA_LIBRARY
-                                  LIBNUMA_INCLUDE_DIR)
-
-mark_as_advanced(LIBNUMA_INCLUDE_DIR LIBNUMA_LIBRARY)
-

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/cmake/FindLibhdfs3.cmake
----------------------------------------------------------------------
diff --git a/cmake/FindLibhdfs3.cmake b/cmake/FindLibhdfs3.cmake
deleted file mode 100644
index 7bd7c7c..0000000
--- a/cmake/FindLibhdfs3.cmake
+++ /dev/null
@@ -1,39 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Module to find the Pivotal libhdfs3.
-
-find_path(LIBHDFS3_INCLUDE_DIR hdfs/hdfs.h)
-
-find_library(LIBHDFS3_LIBRARY NAMES hdfs3 libhdfs3)
-
-# Linking against libhdfs3 also requires linking against gsasl and kerberos.
-find_package(GSasl REQUIRED)
-find_package(Kerberos REQUIRED)
-
-set(LIBHDFS3_LIBRARIES ${LIBHDFS3_LIBRARY}
-                       ${GSASL_LIBRARY}
-                       ${KERBEROS_LIBRARY})
-set(LIBHDFS3_INCLUDE_DIRS ${LIBHDFS3_INCLUDE_DIR}
-                          ${GSASL_INCLUDE_DIR}
-                          ${KERBEROS_INCLUDE_DIR})
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Libhdfs3 DEFAULT_MSG
-                                  LIBHDFS3_LIBRARY LIBHDFS3_INCLUDE_DIR)
-
-mark_as_advanced(LIBHDFS3_INCLUDE_DIR LIBHDFS3_LIBRARY)

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/compression/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/compression/CMakeLists.txt b/compression/CMakeLists.txt
deleted file mode 100644
index ede899c..0000000
--- a/compression/CMakeLists.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Declare micro-libs:
-add_library(quickstep_compression_CompressionDictionary
-            CompressionDictionary.cpp
-            CompressionDictionary.hpp)
-add_library(quickstep_compression_CompressionDictionaryBuilder
-            CompressionDictionaryBuilder.cpp
-            CompressionDictionaryBuilder.hpp)
-add_library(quickstep_compression_CompressionDictionaryLite
-            CompressionDictionaryLite.cpp
-            CompressionDictionaryLite.hpp)
-
-# Link dependencies:
-target_link_libraries(quickstep_compression_CompressionDictionary
-                      glog
-                      quickstep_compression_CompressionDictionaryLite
-                      quickstep_types_Type
-                      quickstep_types_TypedValue
-                      quickstep_types_operations_comparisons_ComparisonID
-                      quickstep_types_operations_comparisons_ComparisonUtil
-                      quickstep_types_operations_comparisons_EqualComparison
-                      quickstep_utility_Macros)
-target_link_libraries(quickstep_compression_CompressionDictionaryBuilder
-                      glog
-                      quickstep_types_Type
-                      quickstep_types_TypedValue
-                      quickstep_types_operations_comparisons_ComparisonUtil
-                      quickstep_utility_Macros)
-target_link_libraries(quickstep_compression_CompressionDictionaryLite
-                      glog
-                      quickstep_types_Type
-                      quickstep_types_TypedValue
-                      quickstep_utility_Macros)
-
-# Module all-in-one library:
-add_library(quickstep_compression ../empty_src.cpp CompressionModule.hpp)
-target_link_libraries(quickstep_compression
-                      quickstep_compression_CompressionDictionary
-                      quickstep_compression_CompressionDictionaryBuilder
-                      quickstep_compression_CompressionDictionaryLite)
-
-# Tests:
-add_executable(CompressionDictionary_unittest "${CMAKE_CURRENT_SOURCE_DIR}/tests/CompressionDictionary_unittest.cpp")
-target_link_libraries(CompressionDictionary_unittest
-                      gtest
-                      gtest_main
-                      quickstep_compression_CompressionDictionary
-                      quickstep_compression_CompressionDictionaryBuilder
-                      quickstep_types_CharType
-                      quickstep_types_DoubleType
-                      quickstep_types_IntType
-                      quickstep_types_Type
-                      quickstep_types_TypeFactory
-                      quickstep_types_TypeID
-                      quickstep_types_TypedValue
-                      quickstep_types_VarCharType
-                      quickstep_types_operations_comparisons_Comparison
-                      quickstep_types_operations_comparisons_ComparisonFactory
-                      quickstep_types_operations_comparisons_ComparisonID
-                      quickstep_utility_ScopedBuffer
-                      ${LIBS})
-add_test(CompressionDictionary_unittest CompressionDictionary_unittest)