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:45:53 UTC

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

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseIndexProperties.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseIndexProperties.hpp b/parser/ParseIndexProperties.hpp
deleted file mode 100644
index 1ff13be..0000000
--- a/parser/ParseIndexProperties.hpp
+++ /dev/null
@@ -1,512 +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_PARSER_PARSE_INDEX_PROPERTIES_HPP_
-#define QUICKSTEP_PARSER_PARSE_INDEX_PROPERTIES_HPP_
-
-#include <cstdint>
-#include <memory>
-#include <string>
-#include <vector>
-#include <unordered_map>
-
-#include "parser/ParseKeyValue.hpp"
-#include "parser/ParseString.hpp"
-#include "parser/ParseTreeNode.hpp"
-#include "storage/StorageBlockLayout.pb.h"
-#include "utility/Macros.hpp"
-#include "utility/PtrList.hpp"
-#include "utility/StringUtil.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-/** \addtogroup Parser
- *  @{
- */
-
-/**
- * @brief Base class for different types of indices and their associated properties
- */
-class IndexProperties {
- public:
-  typedef std::unordered_map<const char*, ParseKeyValue::KeyValueType> valid_property_map_type;
-
-  // An enum specifying the reason for an invalid index description, if any.
-  enum class InvalidIndexType {
-    kNone = 0,
-    kUnimplemented,
-    kDuplicateKey,
-    kInvalidKey,
-    kInvalidValue,
-    kTypeIsNotString,
-    kSizeIsFloat,
-    kSizeIsNegative,
-    kNumHashesIsFloat,
-    kNumHashesIsNegative,
-    kProjectedCountIsFloat,
-    kProjectedCountIsNegative
-  };
-
-  /**
-   * @brief Constructor.
-   * @note The constructor takes ownership of index_sub_block_description.
-   *
-   * @param index_sub_block_description A pointer to an IndexSubBlockDescription proto object.
-   * @param invalid_index_type An enum describing the validity of index.
-   * @param invalid_property_node A pointer to an invalid ParseKeyValue node, if any.
-   **/
-  IndexProperties(IndexSubBlockDescription *index_sub_block_description,
-                  const InvalidIndexType invalid_index_type = InvalidIndexType::kNone,
-                  const ParseKeyValue *invalid_property_node = nullptr)
-      : index_sub_block_description_(index_sub_block_description),
-        invalid_index_type_(invalid_index_type),
-        invalid_property_node_(invalid_property_node) {
-  }
-
-  /**
-   * @brief Virtual Destructor
-   */
-  virtual ~IndexProperties() {
-  }
-
-  /**
-   * @brief Returns printable string that specifies reason for invalid index instance.
-   *
-   * @return The string describing the reason for invalid index
-   **/
-  virtual std::string getReasonForInvalidIndexDescription() const = 0;
-
-  /**
-   * @brief Modifies the index description given a set of custom properties
-   *        specified as a key-value list of properties.
-   *
-   * @param key_value_list Key Value list of custom properties.
-   * @return Returns true if the given set of custom properties was valid
-   *         and was applied correctly, otherwise returns false.
-   **/
-  virtual bool addCustomProperties(const PtrList<ParseKeyValue> *key_value_list) = 0;
-
-  /**
-   * @brief Checks whether this instance describes a valid index or not.
-   *
-   * @return True if index description is valid, false otherwise.
-   **/
-  bool isIndexPropertyValid() const {
-    return invalid_index_type_ == InvalidIndexType::kNone;
-  }
-
-  /**
-   * @brief Returns the parse node corresponding for invalid index instance, if any.
-   *
-   * @return The parse node.
-   **/
-  const ParseKeyValue* getInvalidPropertyNode() const {
-    return invalid_property_node_;
-  }
-
-  /**
-   * @brief Returns a protobuf object representing the index description.
-   *
-   * @return An IndexSubBlockDescription object.
-   **/
-  const IndexSubBlockDescription* getIndexDescription() const {
-    return index_sub_block_description_.get();
-  }
-
-  /**
-   * @brief A helper function that checks whether the given list of custom properties
-   *        contains duplicate keys or not.
-   *
-   * @param key_value_list Key Value list of custom properties.
-   * @param invalid_node Double pointer to an invalid node that is used to store duplicate node, if any.
-   * @return Returns true if the given set of custom properties contains duplicate
-   *         keys, otherwise returns false.
-   **/
-  bool hasDuplicateCustomProperty(const PtrList<ParseKeyValue> *key_value_list, const ParseKeyValue **invalid_node) {
-    // Define an existence map, which checks for duplicate properties in the key_value_list.
-    std::unordered_map<std::string, bool> is_duplicate_property;
-    for (const ParseKeyValue &key_value : *key_value_list) {
-      const std::string key = ToLower(key_value.key()->value());
-      if (is_duplicate_property.find(key) != is_duplicate_property.end()) {
-        *invalid_node = &key_value;
-        return true;  // duplicate found, return true.
-      } else {
-        is_duplicate_property[key] = true;
-      }
-    }
-    return false;  // no duplicates, return false.
-  }
-
- protected:
-  std::unique_ptr<IndexSubBlockDescription> index_sub_block_description_;
-  InvalidIndexType invalid_index_type_;
-  const ParseKeyValue *invalid_property_node_;  // referred object owned by ParseIndexProperties class.
-
-  /**
-   * @brief A setter function that be used to invalidate the index.
-   *
-   * @param invalid_index_type An enum corresponding to the reason, which invalidated the index.
-   * @param invalid_property_node Pointer to the node, which may have caused invalidation.
-   **/
-  void setIndexDescriptionAsInvalid(const InvalidIndexType invalid_index_type,
-                                    const ParseKeyValue *invalid_property_node) {
-    invalid_index_type_ = invalid_index_type;
-    invalid_property_node_ = invalid_property_node;
-    index_sub_block_description_.reset();
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(IndexProperties);
-};
-
-/**
- * @brief Implementation of index properties for a BitWeaving Index (H or V).
- */
-class BitWeavingIndexProperties : public IndexProperties {
- public:
-  static const char *kBitWeavingType;  // is of type string.
-
-  /**
-   * @brief Constructor.
-   **/
-  BitWeavingIndexProperties()
-    : IndexProperties(new IndexSubBlockDescription()) {
-    // Default to BITWEAVING_V, custom properties can change this to H.
-    index_sub_block_description_->set_sub_block_type(IndexSubBlockDescription::BITWEAVING_V);
-  }
-
-  ~BitWeavingIndexProperties() override {
-  }
-
-  std::string getReasonForInvalidIndexDescription() const override {
-    switch (invalid_index_type_) {
-      case InvalidIndexType::kNone:
-        return "";
-      case InvalidIndexType::kDuplicateKey:  // Fall through.
-      case InvalidIndexType::kInvalidKey:
-        return "The only valid property for BitWeaving is TYPE.";
-      case InvalidIndexType::kTypeIsNotString:  // Fall through.
-      case InvalidIndexType::kInvalidValue:
-        return "The only valid values for TYPE are V or H.";
-      default:
-        return "Unknown reason";
-    }
-  }
-
-  bool addCustomProperties(const PtrList<ParseKeyValue> *key_value_list) override {
-    if (key_value_list->size() == 0u) {
-      // No properties specified.
-      return true;
-    } else if (key_value_list->size() == 1u) {
-      const ParseKeyValue &key_value = *key_value_list->begin();
-      if (key_value.getKeyValueType() != ParseKeyValue::KeyValueType::kStringString) {
-        setIndexDescriptionAsInvalid(InvalidIndexType::kTypeIsNotString, &key_value);
-        return false;
-      }
-      const std::string key = ToLower(key_value.key()->value());
-      const std::string value = ToLower(
-          static_cast<const ParseKeyStringValue&>(key_value).value()->value());
-      if (key.compare(kBitWeavingType) == 0) {
-        if (value.compare("h") == 0) {
-          index_sub_block_description_->set_sub_block_type(IndexSubBlockDescription::BITWEAVING_H);
-          return true;
-        } else if (value.compare("v") != 0) {
-          setIndexDescriptionAsInvalid(InvalidIndexType::kInvalidValue, &key_value);
-          return false;
-        } else {
-          // If V was specified, then we do nothing because it's set to V by default.
-          return true;
-        }
-      } else {
-        // Incorrect key specified.
-        setIndexDescriptionAsInvalid(InvalidIndexType::kInvalidKey, &key_value);
-        return false;
-      }
-    } else {
-      // More than one key. This must be an error.
-      invalid_index_type_ = InvalidIndexType::kDuplicateKey;
-      return false;
-    }
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(BitWeavingIndexProperties);
-};
-
-/**
- * @brief Implementation of index properties for Bloom Filter Index
- */
-class BloomFilterIndexProperties : public IndexProperties {
- public:
-  // Index properties associated with this index.
-
-  static const char *kBloomFilterSizeInBytes;    // is of type integer
-  static const char *kBloomFilterNumHashes;      // is of type integer
-  static const char *kBloomFilterProjectElementCount;  // is of type integer
-
-  /**
-   * @brief Constructor.
-   **/
-  BloomFilterIndexProperties()
-      : IndexProperties(new IndexSubBlockDescription()) {
-    index_sub_block_description_->set_sub_block_type(IndexSubBlockDescription::BLOOM_FILTER);
-
-    // Initialize the valid_property_map_ for this index with appropriate type for each property.
-    valid_property_map_[kBloomFilterSizeInBytes] = ParseKeyValue::KeyValueType::kStringInteger;
-    valid_property_map_[kBloomFilterNumHashes] = ParseKeyValue::KeyValueType::kStringInteger;
-    valid_property_map_[kBloomFilterProjectElementCount] = ParseKeyValue::KeyValueType::kStringInteger;
-  }
-
-  ~BloomFilterIndexProperties() override {
-  }
-
-  std::string getReasonForInvalidIndexDescription() const override {
-    switch (invalid_index_type_) {
-      case InvalidIndexType::kNone:
-        return "";
-      case InvalidIndexType::kUnimplemented:
-        return "Bloom Filter index is not yet implemented";
-      case InvalidIndexType::kDuplicateKey:
-        return "Index property is specified more than once";
-      case InvalidIndexType::kInvalidKey:
-        return "Invalid property for this index";
-      case InvalidIndexType::kSizeIsFloat:
-        return "Size cannot be specified as a float";
-      case InvalidIndexType::kSizeIsNegative:
-        return "Size cannot be negative";
-      case InvalidIndexType::kNumHashesIsFloat:
-        return "Num_hashes cannot be specified as a float";
-      case InvalidIndexType::kNumHashesIsNegative:
-        return "Num_hashes cannot be negative";
-      case InvalidIndexType::kProjectedCountIsFloat:
-        return "Projected_element_count cannot be specified as a float";
-      case InvalidIndexType::kProjectedCountIsNegative:
-        return "Projected_element_count cannot be negative";
-      default:
-        return "Unknown reason";
-    }
-  }
-
-  bool addCustomProperties(const PtrList<ParseKeyValue> *key_value_list) override {
-    // If the index is unimplemented, skip adding the custom properties.
-    if (invalid_index_type_ == InvalidIndexType::kUnimplemented) {
-      return false;
-    }
-
-    // Verify for duplicates, if any.
-    if (hasDuplicateCustomProperty(key_value_list, &invalid_property_node_)) {
-      invalid_index_type_ = InvalidIndexType::kDuplicateKey;
-      return false;
-    }
-
-    for (const ParseKeyValue &key_value : *key_value_list) {
-      const std::string key = ToLower(key_value.key()->value());
-      if (key.compare(kBloomFilterSizeInBytes) == 0) {
-        const ParseKeyIntegerValue *key_integer_value = static_cast<const ParseKeyIntegerValue*>(&key_value);
-        if (key_integer_value->value()->float_like()) {
-          setIndexDescriptionAsInvalid(InvalidIndexType::kSizeIsFloat, &key_value);
-          return false;
-        }
-        const std::int64_t bloom_filter_size = key_integer_value->value()->long_value();
-        if (bloom_filter_size < 0) {
-          setIndexDescriptionAsInvalid(InvalidIndexType::kSizeIsNegative, &key_value);
-          return false;
-        }
-        // All good! allow the default bloom filter size to be modified.
-        index_sub_block_description_->SetExtension(BloomFilterIndexSubBlockDescription::bloom_filter_size,
-                                                   bloom_filter_size);
-      } else if (key.compare(kBloomFilterNumHashes) == 0) {
-        const ParseKeyIntegerValue *key_integer_value = static_cast<const ParseKeyIntegerValue*>(&key_value);
-        if (key_integer_value->value()->float_like()) {
-          setIndexDescriptionAsInvalid(InvalidIndexType::kNumHashesIsFloat, &key_value);
-          return false;
-        }
-        const std::int64_t number_of_hashes = key_integer_value->value()->long_value();
-        if (number_of_hashes < 0) {
-          setIndexDescriptionAsInvalid(InvalidIndexType::kNumHashesIsNegative, &key_value);
-          return false;
-        }
-        // All good! allow the default num_hashes to be modified.
-        index_sub_block_description_->SetExtension(BloomFilterIndexSubBlockDescription::number_of_hashes,
-                                                   number_of_hashes);
-      } else if (key.compare(kBloomFilterProjectElementCount) == 0) {
-        const ParseKeyIntegerValue *key_integer_value = static_cast<const ParseKeyIntegerValue*>(&key_value);
-        if (key_integer_value->value()->float_like()) {
-          setIndexDescriptionAsInvalid(InvalidIndexType::kProjectedCountIsFloat, &key_value);
-          return false;
-        }
-        const std::int64_t projected_element_count = key_integer_value->value()->long_value();
-        if (projected_element_count < 0) {
-          setIndexDescriptionAsInvalid(InvalidIndexType::kProjectedCountIsNegative, &key_value);
-          return false;
-        }
-        // All good! allow the default projected_element_count to be modified.
-        index_sub_block_description_->SetExtension(BloomFilterIndexSubBlockDescription::projected_element_count,
-                                                   projected_element_count);
-      } else {
-        // None of the defined properties matched, this is an invalid property for this index.
-        setIndexDescriptionAsInvalid(InvalidIndexType::kInvalidKey, &key_value);
-        return false;
-      }
-    }
-    invalid_index_type_ = InvalidIndexType::kNone;
-    invalid_property_node_ = nullptr;
-    return true;
-  }
-
- private:
-  // A map of index property constants and their associated type.
-  valid_property_map_type valid_property_map_;
-
-  DISALLOW_COPY_AND_ASSIGN(BloomFilterIndexProperties);
-};
-
-/**
- * @brief Implementation of index properties for CSB Tree Index.
- */
-class CSBTreeIndexProperties : public IndexProperties {
- public:
-  /**
-   * @brief Constructor.
-   **/
-  CSBTreeIndexProperties()
-    : IndexProperties(new IndexSubBlockDescription()) {
-    index_sub_block_description_->set_sub_block_type(IndexSubBlockDescription::CSB_TREE);
-  }
-
-  ~CSBTreeIndexProperties() override {
-  }
-
-  std::string getReasonForInvalidIndexDescription() const override {
-    switch (invalid_index_type_) {
-      case InvalidIndexType::kNone:
-        return "";
-      case InvalidIndexType::kUnimplemented:
-        return "CSB Tree index is not yet implemented";
-      case InvalidIndexType::kInvalidKey:
-        return "CSB Tree index does not define index properties";
-      default:
-        return "Unknown reason";
-    }
-  }
-
-  bool addCustomProperties(const PtrList<ParseKeyValue> *key_value_list) override {
-    // CSBTreeIndex does not define any additional index property,
-    // so a call to this function will invalidate the index.
-    invalid_index_type_ = InvalidIndexType::kInvalidKey;
-    invalid_property_node_ = nullptr;
-    index_sub_block_description_.reset();
-    return false;
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(CSBTreeIndexProperties);
-};
-
-/**
- * @brief Implementation of index properties for SMA Index.
- */
-class SMAIndexProperties : public IndexProperties {
- public:
-  /**
-   * @brief Constructor.
-   */
-  SMAIndexProperties() : IndexProperties(new IndexSubBlockDescription()) {
-    index_sub_block_description_->set_sub_block_type(IndexSubBlockDescription::SMA);
-  }
-
-  ~SMAIndexProperties() override {
-  }
-
-  std::string getReasonForInvalidIndexDescription() const override {
-    switch (invalid_index_type_) {
-      case InvalidIndexType::kNone:
-        return "";
-      case InvalidIndexType::kInvalidKey:
-        return "SMA index does not define index properties";
-      default:
-        return "Unknown reason";
-    }
-  }
-
-  bool addCustomProperties(const PtrList<ParseKeyValue> *key_value_list) override {
-    // SMA does not define any index properties, so calling this function
-    // will invalidate the index.
-    invalid_index_type_ = InvalidIndexType::kInvalidKey;
-    invalid_property_node_ = nullptr;
-    index_sub_block_description_.reset();
-    return false;
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(SMAIndexProperties);
-};
-
-/**
- * @brief Encapsulates the IndexProperties key-value list. Makes the job
- *        of resolving IndexProperties easy.
- */
-class ParseIndexProperties : public ParseTreeNode {
- public:
-  /**
-   * @brief Constructor.
-   *
-   * @param line_number Beginning line number.
-   * @param column_number Beginning column number.
-   * @param properties PtrList to the KeyValues.
-   */
-  ParseIndexProperties(const int line_number,
-                       const int column_number,
-                       PtrList<ParseKeyValue> *key_value_list)
-      : ParseTreeNode(line_number, column_number),
-        key_value_list_(key_value_list) {
-  }
-
-  std::string getName() const override { return "IndexProperties"; }
-
-  const PtrList<ParseKeyValue>* getKeyValueList() const {
-    return key_value_list_.get();
-  }
-
- protected:
-  void getFieldStringItems(
-      std::vector<std::string> *inline_field_names,
-      std::vector<std::string> *inline_field_values,
-      std::vector<std::string> *non_container_child_field_names,
-      std::vector<const ParseTreeNode*> *non_container_child_fields,
-      std::vector<std::string> *container_child_field_names,
-      std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override {
-    for (const ParseKeyValue &index_property : *key_value_list_) {
-      non_container_child_field_names->push_back("index_property");
-      non_container_child_fields->push_back(&index_property);
-    }
-  }
-
- private:
-  std::unique_ptr<PtrList<ParseKeyValue>> key_value_list_;
-
-  DISALLOW_COPY_AND_ASSIGN(ParseIndexProperties);
-};
-
-/** @} */
-
-}  // namespace quickstep
-
-#endif  // QUICKSTEP_PARSER_PARSE_INDEX_PROPERTIES_HPP_

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseJoinedTableReference.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseJoinedTableReference.cpp b/parser/ParseJoinedTableReference.cpp
deleted file mode 100644
index b2cbeb2..0000000
--- a/parser/ParseJoinedTableReference.cpp
+++ /dev/null
@@ -1,73 +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 "parser/ParseJoinedTableReference.hpp"
-
-#include <string>
-#include <type_traits>
-#include <vector>
-
-#include "glog/logging.h"
-
-namespace quickstep {
-
-void ParseJoinedTableReference::getFieldStringItems(
-    std::vector<std::string> *inline_field_names,
-    std::vector<std::string> *inline_field_values,
-    std::vector<std::string> *non_container_child_field_names,
-    std::vector<const ParseTreeNode*> *non_container_child_fields,
-    std::vector<std::string> *container_child_field_names,
-    std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const {
-  ParseTableReference::getFieldStringItems(inline_field_names,
-                                           inline_field_values,
-                                           non_container_child_field_names,
-                                           non_container_child_fields,
-                                           container_child_field_names,
-                                           container_child_fields);
-
-  inline_field_names->push_back("join_type");
-  switch (join_type_) {
-    case JoinType::kInnerJoin:
-      inline_field_values->push_back("InnerJoin");
-      break;
-    case JoinType::kLeftOuterJoin:
-      inline_field_values->push_back("LeftOuterJoin");
-      break;
-    case JoinType::kRightOuterJoin:
-      inline_field_values->push_back("RightOuterJoin");
-      break;
-    case JoinType::kFullOuterJoin:
-      inline_field_values->push_back("FullOuterJoin");
-      break;
-    default:
-      LOG(FATAL) << "Invalid JoinType: "
-                 << static_cast<typename std::underlying_type<JoinType>::type>(join_type_);
-  }
-
-  non_container_child_field_names->push_back("left_table");
-  non_container_child_fields->push_back(left_table_.get());
-
-  non_container_child_field_names->push_back("right_table");
-  non_container_child_fields->push_back(right_table_.get());
-
-  non_container_child_field_names->push_back("join_predicate");
-  non_container_child_fields->push_back(join_predicate_.get());
-}
-
-}  // namespace quickstep

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseJoinedTableReference.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseJoinedTableReference.hpp b/parser/ParseJoinedTableReference.hpp
deleted file mode 100644
index f1f4aa2..0000000
--- a/parser/ParseJoinedTableReference.hpp
+++ /dev/null
@@ -1,130 +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_PARSER_PARSE_JOINED_TABLE_REFERENCE_HPP_
-#define QUICKSTEP_PARSER_PARSE_JOINED_TABLE_REFERENCE_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "parser/ParsePredicate.hpp"
-#include "parser/ParseTableReference.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-
-class ParseTreeNode;
-
-/** \addtogroup Parser
- *  @{
- */
-
-/**
- * @brief Parsed representation of a joined table.
- */
-class ParseJoinedTableReference : public ParseTableReference {
- public:
-  enum class JoinType {
-    kInnerJoin = 0,
-    kLeftOuterJoin,
-    kRightOuterJoin,
-    kFullOuterJoin
-  };
-
-  /**
-   * @brief Constructor.
-   *
-   * @param line_number The line number of the token "JOIN" in the SQL statement.
-   * @param column_number The column number of the token "JOIN" in the SQL statement.
-   * @param join_type The join type.
-   * @param left_table The left-hand side table.
-   * @param right_table The right-hand side table.
-   * @param join_predicate The join predicate.
-   */
-  ParseJoinedTableReference(const int line_number,
-                            const int column_number,
-                            const JoinType join_type,
-                            ParseTableReference *left_table,
-                            ParseTableReference *right_table,
-                            ParsePredicate *join_predicate)
-    : ParseTableReference(line_number, column_number),
-      join_type_(join_type),
-      left_table_(left_table),
-      right_table_(right_table),
-      join_predicate_(join_predicate) {
-  }
-
-  TableReferenceType getTableReferenceType() const override {
-    return kJoinedTableReference;
-  }
-
-  std::string getName() const override { return "JoinedTable"; }
-
-  /**
-   * @return The join type.
-   */
-  JoinType join_type() const {
-    return join_type_;
-  }
-
-  /**
-   * @return The left-side table.
-   */
-  const ParseTableReference* left_table() const {
-    return left_table_.get();
-  }
-
-  /**
-   * @return The right-side table.
-   */
-  const ParseTableReference* right_table() const {
-    return right_table_.get();
-  }
-
-  /**
-   * @return The join predicate.
-   */
-  const ParsePredicate* join_predicate() const {
-    return join_predicate_.get();
-  }
-
- protected:
-  void getFieldStringItems(
-      std::vector<std::string> *inline_field_names,
-      std::vector<std::string> *inline_field_values,
-      std::vector<std::string> *non_container_child_field_names,
-      std::vector<const ParseTreeNode*> *non_container_child_fields,
-      std::vector<std::string> *container_child_field_names,
-      std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override;
-
- private:
-  const JoinType join_type_;
-  std::unique_ptr<ParseTableReference> left_table_;
-  std::unique_ptr<ParseTableReference> right_table_;
-  std::unique_ptr<ParsePredicate> join_predicate_;
-
-  DISALLOW_COPY_AND_ASSIGN(ParseJoinedTableReference);
-};
-
-/** @} */
-
-}  // namespace quickstep
-
-#endif /* QUICKSTEP_PARSER_PARSE_JOINED_TABLE_REFERENCE_HPP_ */

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseKeyValue.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseKeyValue.hpp b/parser/ParseKeyValue.hpp
deleted file mode 100644
index 9d6d511..0000000
--- a/parser/ParseKeyValue.hpp
+++ /dev/null
@@ -1,257 +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_PARSER_PARSE_KEY_VALUE_HPP_
-#define QUICKSTEP_PARSER_PARSE_KEY_VALUE_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "parser/ParseLiteralValue.hpp"
-#include "parser/ParseString.hpp"
-#include "parser/ParseTreeNode.hpp"
-#include "utility/Macros.hpp"
-#include "utility/PtrList.hpp"
-
-namespace quickstep {
-
-/**
- * @brief Base class for the Parse Key Values.
- */
-class ParseKeyValue : public ParseTreeNode {
- public:
-  enum class KeyValueType {
-    kStringString,
-    kStringStringList,
-    kStringInteger
-  };
-
-  /**
-   * @brief Single value constructor.
-   *
-   * @param line_number Line number of the first token of this node in the SQL statement.
-   * @param column_number Column number of the first token of this node in the SQL statement.
-   * @param value A single literal value.
-   **/
-  ParseKeyValue(const int line_number,
-                const int column_number,
-                ParseString *key)
-      : ParseTreeNode(line_number, column_number),
-        key_(key) { }
-
-  /**
-   * @brief Destructor.
-   **/
-  ~ParseKeyValue() override { }
-
-  /**
-   * @brief Get the subclass type of the parse key value.
-   */
-  virtual KeyValueType getKeyValueType() const = 0;
-
-  /**
-   * @return Pointer to the key string.
-   */
-  const ParseString* key() const {
-    return key_.get();
-  }
-
-  std::string getName() const override {
-    return "KeyValue";
-  }
-
- protected:
-  std::unique_ptr<ParseString> key_;
-};
-
-/**
- * @brief The parsed representation of a key-value pair.
- **/
-class ParseKeyStringValue : public ParseKeyValue {
- public:
-  /**
-   * @brief Single value constructor.
-   *
-   * @param line_number Line number of the first token of this node in the SQL statement.
-   * @param column_number Column number of the first token of this node in the SQL statement.
-   * @param key A parse string representing the key.
-   * @param value A parse string representing the key.
-   **/
-  ParseKeyStringValue(const int line_number,
-                      const int column_number,
-                      ParseString *key,
-                      ParseString *value)
-      : ParseKeyValue(line_number, column_number, key),
-        value_(value) { }
-
-  KeyValueType getKeyValueType() const override {
-    return ParseKeyValue::KeyValueType::kStringString;
-  }
-
-  /**
-   * @return A pointer to the value ParseString.
-   */
-  const ParseString* value() const {
-    return value_.get();
-  }
-
-  std::string getName() const override {
-    return "KeyStringValue";
-  }
-
- protected:
-  void getFieldStringItems(
-      std::vector<std::string> *inline_field_names,
-      std::vector<std::string> *inline_field_values,
-      std::vector<std::string> *non_container_child_field_names,
-      std::vector<const ParseTreeNode*> *non_container_child_fields,
-      std::vector<std::string> *container_child_field_names,
-      std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override {
-    inline_field_names->push_back("key");
-    inline_field_values->push_back(key_->value());
-
-    non_container_child_field_names->push_back("value");
-    non_container_child_fields->push_back(value_.get());
-  }
-
- private:
-  std::unique_ptr<ParseString> value_;
-
-  DISALLOW_COPY_AND_ASSIGN(ParseKeyStringValue);
-};
-
-/**
- * @brief The parsed representation of a key-value pair. Value is a list of values.
- **/
-class ParseKeyStringList : public ParseKeyValue {
- public:
-  /**
-   * @brief Single value constructor.
-   *
-   * @param line_number Line number of the first token of this node in the SQL statement.
-   * @param column_number Column number of the first token of this node in the SQL statement.
-   * @param key A parse string representing the key.
-   * @param value A list of string values.
-   **/
-  ParseKeyStringList(const int line_number,
-                     const int column_number,
-                     ParseString *key,
-                     PtrList<ParseString> *value)
-      : ParseKeyValue(line_number, column_number, key),
-        value_(value) { }
-
-  KeyValueType getKeyValueType() const override {
-    return ParseKeyValue::KeyValueType::kStringStringList;
-  }
-
-  /**
-   * @return A list of ParseStrings.
-   */
-  const PtrList<ParseString>* value() const {
-    return value_.get();
-  }
-
-  std::string getName() const override {
-    return "KeyStringList";
-  }
-
- protected:
-  void getFieldStringItems(
-      std::vector<std::string> *inline_field_names,
-      std::vector<std::string> *inline_field_values,
-      std::vector<std::string> *non_container_child_field_names,
-      std::vector<const ParseTreeNode*> *non_container_child_fields,
-      std::vector<std::string> *container_child_field_names,
-      std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override {
-    inline_field_names->push_back("key");
-    inline_field_values->push_back(key_->value());
-
-    container_child_field_names->push_back("value_list");
-    container_child_fields->emplace_back();
-    for (const ParseString &value : *value_) {
-      container_child_fields->back().push_back(&value);
-    }
-  }
-
- private:
-  std::unique_ptr<PtrList<ParseString> > value_;
-
-  DISALLOW_COPY_AND_ASSIGN(ParseKeyStringList);
-};
-
-/**
- * @brief The parsed representation of a key-value pair.
- **/
-class ParseKeyIntegerValue : public ParseKeyValue {
- public:
-  /**
-   * @brief Single value constructor.
-   *
-   * @param line_number Line number of the first token of this node in the SQL statement.
-   * @param column_number Column number of the first token of this node in the SQL statement.
-   * @param key A parse string representing the key.
-   * @param value A single numeric literal value.
-   **/
-  ParseKeyIntegerValue(const int line_number,
-                       const int column_number,
-                       ParseString *key,
-                       NumericParseLiteralValue *value)
-      : ParseKeyValue(line_number, column_number, key),
-        value_(value) { }
-
-  KeyValueType getKeyValueType() const override {
-    return ParseKeyValue::KeyValueType::kStringInteger;
-  }
-
-  /**
-   * @return A pointer to the value ParseString.
-   */
-  const NumericParseLiteralValue* value() const {
-    return value_.get();
-  }
-
-  std::string getName() const override {
-    return "KeyIntegerValue";
-  }
-
- protected:
-  void getFieldStringItems(
-      std::vector<std::string> *inline_field_names,
-      std::vector<std::string> *inline_field_values,
-      std::vector<std::string> *non_container_child_field_names,
-      std::vector<const ParseTreeNode*> *non_container_child_fields,
-      std::vector<std::string> *container_child_field_names,
-      std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override {
-    inline_field_names->push_back("key");
-    inline_field_values->push_back(key_->value());
-
-    non_container_child_field_names->push_back("value");
-    non_container_child_fields->push_back(value_.get());
-  }
-
- private:
-  std::unique_ptr<NumericParseLiteralValue> value_;
-
-  DISALLOW_COPY_AND_ASSIGN(ParseKeyIntegerValue);
-};
-
-}  // namespace quickstep
-
-#endif  // QUICKSTEP_PARSER_PARSE_KEY_VALUE_HPP_

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseLimit.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseLimit.cpp b/parser/ParseLimit.cpp
deleted file mode 100644
index f39c430..0000000
--- a/parser/ParseLimit.cpp
+++ /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.
- **/
-
-#include "parser/ParseLimit.hpp"
-
-#include <string>
-#include <vector>
-
-#include "parser/ParseLiteralValue.hpp"
-
-namespace quickstep {
-
-void ParseLimit::getFieldStringItems(std::vector<std::string> *inline_field_names,
-                                     std::vector<std::string> *inline_field_values,
-                                     std::vector<std::string> *non_container_child_field_names,
-                                     std::vector<const ParseTreeNode*> *non_container_child_fields,
-                                     std::vector<std::string> *container_child_field_names,
-                                     std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const {
-  non_container_child_field_names->push_back("");
-  non_container_child_fields->push_back(limit_expression_.get());
-}
-
-}  // namespace quickstep

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseLimit.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseLimit.hpp b/parser/ParseLimit.hpp
deleted file mode 100644
index 2afb049..0000000
--- a/parser/ParseLimit.hpp
+++ /dev/null
@@ -1,90 +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_PARSER_PARSE_LIMIT_HPP_
-#define QUICKSTEP_PARSER_PARSE_LIMIT_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "parser/ParseLiteralValue.hpp"
-#include "parser/ParseTreeNode.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-
-/** \addtogroup Parser
- *  @{
- */
-
-/**
- * @brief A parsed representation of LIMIT.
- */
-class ParseLimit : public ParseTreeNode {
- public:
-  /**
-   * @brief Constructor.
-   *
-   * @param line_number The line number of "LIMIT" in the SQL statement.
-   * @param column_number The column number of "LIMIT" in the SQL statement.
-   * @param limit_expression The LIMIT value expression.
-   */
-  ParseLimit(const int line_number, const int column_number, NumericParseLiteralValue *limit_expression)
-      : ParseTreeNode(line_number, column_number),
-        limit_expression_(limit_expression) {
-  }
-
-  /**
-   * @brief Destructor.
-   */
-  ~ParseLimit() override {}
-
-  /**
-   * @brief Gets the LIMIT expression.
-   *
-   * @return LIMIT expression
-   */
-  const NumericParseLiteralValue* limit_expression() const {
-    return limit_expression_.get();
-  }
-
-  std::string getName() const override {
-    return "LIMIT";
-  }
-
- protected:
-  void getFieldStringItems(std::vector<std::string> *inline_field_names,
-                           std::vector<std::string> *inline_field_values,
-                           std::vector<std::string> *non_container_child_field_names,
-                           std::vector<const ParseTreeNode*> *non_container_child_fields,
-                           std::vector<std::string> *container_child_field_names,
-                           std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override;
-
- private:
-  std::unique_ptr<NumericParseLiteralValue> limit_expression_;
-
-  DISALLOW_COPY_AND_ASSIGN(ParseLimit);
-};
-
-/** @} */
-
-}  // namespace quickstep
-
-#endif /* QUICKSTEP_PARSER_PARSELIMIT_HPP_ */

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseLiteralValue.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseLiteralValue.cpp b/parser/ParseLiteralValue.cpp
deleted file mode 100644
index d4753ab..0000000
--- a/parser/ParseLiteralValue.cpp
+++ /dev/null
@@ -1,211 +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 __STDC_FORMAT_MACROS
-#define __STDC_FORMAT_MACROS
-#endif
-
-#include "parser/ParseLiteralValue.hpp"
-
-#include <cinttypes>
-#include <cstdint>
-#include <cstdio>
-#include <limits>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "types/DatetimeIntervalType.hpp"
-#include "types/DoubleType.hpp"
-#include "types/IntType.hpp"
-#include "types/LongType.hpp"
-#include "types/NullType.hpp"
-#include "types/Type.hpp"
-#include "types/VarCharType.hpp"
-#include "types/YearMonthIntervalType.hpp"
-#include "utility/SqlError.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-
-TypedValue NullParseLiteralValue::concretize(
-    const Type *type_hint,
-    const Type **concretized_type) const {
-  if (type_hint == nullptr) {
-    *concretized_type = &NullType::InstanceNullable();
-  } else {
-    *concretized_type = &(type_hint->getNullableVersion());
-  }
-  return (*concretized_type)->makeNullValue();
-}
-
-NumericParseLiteralValue::NumericParseLiteralValue(const int line_number,
-                                                   const int column_number,
-                                                   const char *numstring)
-    : ParseLiteralValue(line_number, column_number),
-      numeric_string_(numstring) {
-  float_like_ = (numeric_string_.find('.') != std::string::npos)
-                || (numeric_string_.find('e') != std::string::npos)
-                || (numeric_string_.find('E') != std::string::npos);
-
-  if (!float_like_) {
-    CHECK_EQ(1, std::sscanf(numeric_string_.c_str(), "%" SCNd64, &long_value_))
-        << "Failed to parse int64_t from numeric string \""
-        << numeric_string_ << "\n";
-  }
-}
-
-void NumericParseLiteralValue::prependMinus() {
-  std::string minused("-");
-  minused.append(numeric_string_);
-  numeric_string_ = std::move(minused);
-
-  if (!float_like_) {
-    long_value_ = -long_value_;
-  }
-}
-
-TypedValue NumericParseLiteralValue::concretize(
-    const Type *type_hint,
-    const Type **concretized_type) const {
-  TypedValue parsed_value;
-  if ((type_hint != nullptr)
-      && (type_hint->getSuperTypeID() == Type::kNumeric)
-      && (type_hint->parseValueFromString(numeric_string_, &parsed_value))) {
-    *concretized_type = &(type_hint->getNonNullableVersion());
-    return parsed_value;
-  }
-
-  if (float_like_) {
-    *concretized_type = &DoubleType::InstanceNonNullable();
-    CHECK((*concretized_type)->parseValueFromString(numeric_string_, &parsed_value))
-        << "Failed to parse double from numeric string \""
-        << numeric_string_ << "\"";
-    return parsed_value;
-  } else {
-    if ((long_value_ >= std::numeric_limits<int>::min())
-        && (long_value_ <= std::numeric_limits<int>::max())) {
-      *concretized_type = &IntType::InstanceNonNullable();
-      return TypedValue(static_cast<int>(long_value_));
-    } else {
-      *concretized_type = &LongType::InstanceNonNullable();
-      return TypedValue(long_value_);
-    }
-  }
-}
-
-void NumericParseLiteralValue::getFieldStringItems(
-    std::vector<std::string> *inline_field_names,
-    std::vector<std::string> *inline_field_values,
-    std::vector<std::string> *non_container_child_field_names,
-    std::vector<const ParseTreeNode*> *non_container_child_fields,
-    std::vector<std::string> *container_child_field_names,
-    std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const {
-  inline_field_names->push_back("numeric_string");
-  inline_field_values->push_back(numeric_string_);
-
-  inline_field_names->push_back("float_like");
-  inline_field_values->push_back(float_like_ ? "true" : "false");
-}
-
-bool StringParseLiteralValue::ParseAmbiguousInterval(
-    ParseString *value,
-    StringParseLiteralValue **output) {
-  *output = new StringParseLiteralValue(value,
-                                        nullptr);  // Initially no explicit type.
-
-  // Try parsing as DatetimeInterval.
-  (*output)->explicit_type_ = &DatetimeIntervalType::InstanceNonNullable();
-  if ((*output)->tryExplicitTypeParse()) {
-    return true;
-  }
-
-  // Try parsing as YearMonthInterval.
-  (*output)->explicit_type_ = &YearMonthIntervalType::InstanceNonNullable();
-  if ((*output)->tryExplicitTypeParse()) {
-    return true;
-  }
-
-  delete *output;
-  *output = nullptr;
-  return false;
-}
-
-TypedValue StringParseLiteralValue::concretize(const Type *type_hint,
-                                               const Type **concretized_type) const {
-  if (explicit_type_ != nullptr) {
-    if ((type_hint != nullptr) && (type_hint->isSafelyCoercibleFrom(*explicit_type_))) {
-      *concretized_type = type_hint;
-      return type_hint->coerceValue(explicit_parsed_value_, *explicit_type_);
-    } else {
-      *concretized_type = explicit_type_;
-      return explicit_parsed_value_;
-    }
-  } else {
-    TypedValue parsed_value;
-    if ((type_hint != nullptr)
-        && (type_hint->parseValueFromString(value_->value(), &parsed_value))) {
-      *concretized_type = &(type_hint->getNonNullableVersion());
-      return parsed_value;
-    } else {
-      *concretized_type = &VarCharType::InstanceNonNullable(value_->value().length());
-      CHECK((*concretized_type)->parseValueFromString(value_->value(), &parsed_value));
-      return parsed_value;
-    }
-  }
-}
-
-std::string StringParseLiteralValue::generateName() const {
-  std::string name;
-  if (explicit_type_ != nullptr) {
-    name.append(explicit_type_->getName());
-    name.push_back('(');
-  }
-  name.push_back('\'');
-  name.append(value_->value());
-  name.push_back('\'');
-  if (explicit_type_ != nullptr) {
-    name.push_back(')');
-  }
-  return name;
-}
-
-bool StringParseLiteralValue::tryExplicitTypeParse() {
-  DCHECK(explicit_type_ != nullptr);
-  return explicit_type_->parseValueFromString(value_->value(), &explicit_parsed_value_);
-}
-
-void StringParseLiteralValue::getFieldStringItems(
-    std::vector<std::string> *inline_field_names,
-    std::vector<std::string> *inline_field_values,
-    std::vector<std::string> *non_container_child_field_names,
-    std::vector<const ParseTreeNode*> *non_container_child_fields,
-    std::vector<std::string> *container_child_field_names,
-    std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const {
-  inline_field_names->push_back("value");
-  inline_field_values->push_back(value_->value());
-
-  if (explicit_type_ != nullptr) {
-    inline_field_names->push_back("explicit_type");
-    inline_field_values->push_back(explicit_type_->getName());
-  }
-}
-
-}  // namespace quickstep

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseLiteralValue.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseLiteralValue.hpp b/parser/ParseLiteralValue.hpp
deleted file mode 100644
index 105a774..0000000
--- a/parser/ParseLiteralValue.hpp
+++ /dev/null
@@ -1,354 +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_PARSER_PARSE_LITERAL_VALUE_HPP_
-#define QUICKSTEP_PARSER_PARSE_LITERAL_VALUE_HPP_
-
-#include <cstdint>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "parser/ParseString.hpp"
-#include "parser/ParseTreeNode.hpp"
-#include "types/TypedValue.hpp"
-#include "utility/Macros.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-
-class Type;
-
-/** \addtogroup Parser
- *  @{
- */
-
-/**
- * @brief The parsed representation of a literal data value.
- **/
-class ParseLiteralValue : public ParseTreeNode {
- public:
-  /**
-   * @brief Virtual destructor.
-   **/
-  ~ParseLiteralValue() override {
-  }
-
-  /**
-   * @brief Obtain this value as a literal TypedValue in the quickstep type
-   *        system.
-   *
-   * @param type_hint A hint of what Type is expected. This may be used to give
-   *        NULL values the correct Type, or to disambiguate between types that
-   *        have similar human-readable text formats. type_hint may be NULL, in
-   *        which case the most sensible guess for the value's Type is used
-   *        (for a NULL literal, the special type NullType is used).
-   * @param concretized_type After the call, *concretized_type will point to
-   *        the actual Type that the returned TypedValue belongs to.
-   * @return The concrete version of this literal value.
-   **/
-  virtual TypedValue concretize(const Type *type_hint,
-                                const Type **concretized_type) const = 0;
-
-  /**
-   * @brief Obtain an exact, deep copy of this ParseLiteralValue.
-   *
-   * @return A copy of this ParseLiteralValue.
-   **/
-  virtual ParseLiteralValue* clone() const = 0;
-
-  /**
-   * @brief Get a human-readable representation of this value.
-   *
-   * @return The human-readable form of this value.
-   **/
-  virtual std::string generateName() const = 0;
-
- protected:
-  /**
-   * @brief Constructor.
-   *
-   * @param line_number Line number of the first token of this node in the SQL statement.
-   * @param column_number Column number of the first token of this node in the SQL statement.
-   **/
-  ParseLiteralValue(const int line_number, const int column_number)
-      : ParseTreeNode(line_number, column_number) {
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(ParseLiteralValue);
-};
-
-/**
- * @brief The parsed representation of a NULL literal.
- **/
-class NullParseLiteralValue: public ParseLiteralValue {
- public:
-  /**
-   * @brief Constructor.
-   *
-   * @param line_number Line number of the first token of this node in the SQL statement.
-   * @param column_number Column number of the first token of this node in the SQL statement.
-   **/
-  NullParseLiteralValue(const int line_number, const int column_number)
-      : ParseLiteralValue(line_number, column_number) {
-  }
-
-  std::string getName() const override {
-    return "NullLiteral";
-  }
-
-  TypedValue concretize(const Type *type_hint,
-                        const Type **concretized_type) const override;
-
-  ParseLiteralValue* clone() const override {
-    return new NullParseLiteralValue(line_number(), column_number());
-  }
-
-  std::string generateName() const override {
-    return "NULL";
-  }
-
- protected:
-  void getFieldStringItems(
-      std::vector<std::string> *inline_field_names,
-      std::vector<std::string> *inline_field_values,
-      std::vector<std::string> *non_container_child_field_names,
-      std::vector<const ParseTreeNode*> *non_container_child_fields,
-      std::vector<std::string> *container_child_field_names,
-      std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override {
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(NullParseLiteralValue);
-};
-
-/**
- * @brief The parsed representation of an unquoted numeric literal.
- **/
-class NumericParseLiteralValue : public ParseLiteralValue {
- public:
-  /**
-   * @brief Constructor.
-   *
-   * @param line_number Line number of the first token of this node in the SQL statement.
-   * @param column_number Column number of the first token of this node in the SQL statement.
-   * @param numstring The C-string form of the numeric value.
-   **/
-  NumericParseLiteralValue(const int line_number,
-                           const int column_number,
-                           const char *numstring);
-
-  /**
-   * @brief Destructor.
-   **/
-  ~NumericParseLiteralValue() override {
-  }
-
-  std::string getName() const override {
-    return "NumericLiteral";
-  }
-
-  /**
-   * @brief Prepend a minus sign to this numeric value, negating it.
-   * @note This exists to work around a quirk in our Bison SQL grammar, since
-   *       a minus sign can be the leading character in a negative number OR
-   *       can represent the unary negation operation applied to a numeric
-   *       value. Our solution is to have the Lexer scan all numeric literals
-   *       as unsigned values, while the parser has a rule that calls this
-   *       method when a minus-sign token occurs in front of a numeric literal.
-   **/
-  void prependMinus();
-
-  /**
-   * @brief Determine whether this numeric value looks like a floating-point
-   *        value.
-   *
-   * @return True if the value is "float-like", false otherwise.
-   **/
-  bool float_like() const {
-    return float_like_;
-  }
-
-  /**
-   * @brief Get this numeric value as a long.
-   *
-   * @return This numeric value as a long.
-   **/
-  std::int64_t long_value() const {
-    DCHECK(!float_like_)
-        << "Attempted to read integer value from float-like "
-        << "NumericParseLiteralValue";
-    return long_value_;
-  }
-
-  /**
-   * @note This implementation of concretize() always tries to honor the given
-   *       type_hint first. If resolution with the supplied type_hint fails, or
-   *       if no type_hint is given, then the following rules apply:
-   *         1. If the literal contains a decimal point or exponent, resolve as
-   *            DoubleType (unless FloatType is hinted, we always use
-   *            DoubleType for more precision).
-   *         2. Otherwise, if the literal is in-range for a 32-bit signed
-   *            integer, resolve as IntType.
-   *         3. Otherwise, resolve as LongType.
-   **/
-  TypedValue concretize(const Type *type_hint,
-                        const Type **concretized_type) const override;
-
-  ParseLiteralValue* clone() const override {
-    return new NumericParseLiteralValue(line_number(),
-                                        column_number(),
-                                        numeric_string_.c_str());
-  }
-
-  std::string generateName() const override {
-    return numeric_string_;
-  }
-
- protected:
-  void getFieldStringItems(
-      std::vector<std::string> *inline_field_names,
-      std::vector<std::string> *inline_field_values,
-      std::vector<std::string> *non_container_child_field_names,
-      std::vector<const ParseTreeNode*> *non_container_child_fields,
-      std::vector<std::string> *container_child_field_names,
-      std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override;
-
- private:
-  std::int64_t long_value_;
-  bool float_like_;
-
-  std::string numeric_string_;
-
-  DISALLOW_COPY_AND_ASSIGN(NumericParseLiteralValue);
-};
-
-/**
- * @brief The parsed representation of a quoted string value. This includes
- *        explicitly typed literals of the form "TYPE 'literal value'".
- **/
-class StringParseLiteralValue : public ParseLiteralValue {
- public:
-  /**
-   * @brief Constructor.
-   *
-   * @param value The string.
-   * @param explicit_type If non-NULL, indicates an explicit Type that appeared
-   *        immediately before a quoted string in the SQL syntax. If NULL, then
-   *        value appeared by itself as a quoted string without an explicit
-   *        Type.
-   **/
-  explicit StringParseLiteralValue(ParseString *value,
-                                   const Type *explicit_type)
-      : ParseLiteralValue(value->line_number(), value->column_number()),
-        value_(value),
-        explicit_type_(explicit_type) {
-  }
-
-  ~StringParseLiteralValue() override {
-  }
-
-  /**
-   * @brief Attempt to parse an interval literal that was specified
-   *        in the form "INTERVAL 'value string'" in SQL syntax.
-   * @note There are two distinct INTERVAL Types in Quickstep:
-   *       DatetimeInterval ("DATETIME INTERVAL" in SQL) and YearMonthInterval
-   *       ("YEARMONTH INTERVAL" in SQL). The INTERVAL keyword by itself is
-   *       ambiguous and does not name a Type, however the text formats for
-   *       literals of the two different interval Types are distinct and
-   *       non-overlapping, so if a valid interval literal string follows the
-   *       INTERVAL keyword, the Type can be determined unambiguously. This
-   *       method does just that, allowing the SQL parser to be more forgiving
-   *       when interval literals don't specify the flavor of interval
-   *       up-front.
-   *
-   * @param value A string literal that followed an INTERVAL keyword in SQL
-   *        syntax. On successful parse, this becomes owned by the parsed
-   *        StringParseLiteralValue. On failure, it is deleted.
-   * @param output On successful parse, *output is overwritten to point to a
-   *        new heap-allocated StringParseLiteralValue representing the parsed
-   *        interval literal.
-   * @return true if value was successfully parsed as either of the interval
-   *         types, false otherwise.
-   **/
-  static bool ParseAmbiguousInterval(ParseString *value,
-                                     StringParseLiteralValue **output);
-
-  /**
-   * @note The rules for what type this literal is resolved as depend on
-   *       whether an explicit_type_ from the SQL context exists, and whether
-   *       a type_hint is provided. Specifically, they are:
-   *         1. If there is an explicit_type_:
-   *           a. If there is a type_hint and it is safely coercible from
-   *              explicit_type_, do the coercion and resolve as type_hint.
-   *           b. Otherwise resolve as explicit_type_.
-   *         2. If there is no explicit_type_:
-   *           a. If there is a type_hint and it can successfully parse the
-   *              string value, resolve as the hinted type.
-   *           b. Otherwise, resolve as a non-nullable VarCharType that is
-   *              exactly long enough for this string literal.
-   **/
-  TypedValue concretize(const Type *type_hint,
-                        const Type **concretized_type) const override;
-
-  std::string getName() const override {
-    return "StringLiteral";
-  }
-
-  ParseLiteralValue* clone() const override {
-    return new StringParseLiteralValue(value_->clone(), explicit_type_);
-  }
-
-  std::string generateName() const override;
-
-  /**
-   * @brief Attempt to parse this string literal as an instance of the
-   *        explicit Type provided to the constructor. This should ALWAYS be
-   *        called by the parser immediately after creating a
-   *        StringParseLiteralValue with an explicit Type.
-   *
-   * @return true if parse was successful, false if the string was not in a
-   *         valid format for the specified explicit Type.
-   **/
-  bool tryExplicitTypeParse();
-
- protected:
-  void getFieldStringItems(
-      std::vector<std::string> *inline_field_names,
-      std::vector<std::string> *inline_field_values,
-      std::vector<std::string> *non_container_child_field_names,
-      std::vector<const ParseTreeNode*> *non_container_child_fields,
-      std::vector<std::string> *container_child_field_names,
-      std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override;
-
- private:
-  std::unique_ptr<ParseString> value_;
-  const Type *explicit_type_;
-  TypedValue explicit_parsed_value_;
-
-  DISALLOW_COPY_AND_ASSIGN(StringParseLiteralValue);
-};
-
-/** @} */
-
-}  // namespace quickstep
-
-#endif  // QUICKSTEP_PARSER_PARSE_LITERAL_VALUE_HPP_

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseOrderBy.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseOrderBy.cpp b/parser/ParseOrderBy.cpp
deleted file mode 100644
index da46a1f..0000000
--- a/parser/ParseOrderBy.cpp
+++ /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.
- **/
-
-#include "parser/ParseOrderBy.hpp"
-
-#include <string>
-#include <vector>
-
-#include "parser/ParseExpression.hpp"
-
-namespace quickstep {
-
-void ParseOrderByItem::getFieldStringItems(
-    std::vector<std::string> *inline_field_names,
-    std::vector<std::string> *inline_field_values,
-    std::vector<std::string> *non_container_child_field_names,
-    std::vector<const ParseTreeNode*> *non_container_child_fields,
-    std::vector<std::string> *container_child_field_names,
-    std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const {
-  inline_field_names->push_back("is_asc");
-  inline_field_values->push_back(is_ascending_ ? "true" : "false");
-  inline_field_names->push_back("nulls_first");
-  inline_field_values->push_back(nulls_first_ ? "true" : "false");
-
-  non_container_child_field_names->push_back("");
-  non_container_child_fields->push_back(ordering_expression_.get());
-}
-
-void ParseOrderBy::getFieldStringItems(std::vector<std::string> *inline_field_names,
-                                       std::vector<std::string> *inline_field_values,
-                                       std::vector<std::string> *non_container_child_field_names,
-                                       std::vector<const ParseTreeNode*> *non_container_child_fields,
-                                       std::vector<std::string> *container_child_field_names,
-                                       std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const {
-  for (const ParseOrderByItem &order_by_item : *order_by_items_) {
-    non_container_child_field_names->push_back("");
-    non_container_child_fields->push_back(&order_by_item);
-  }
-}
-
-}  // namespace quickstep

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseOrderBy.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseOrderBy.hpp b/parser/ParseOrderBy.hpp
deleted file mode 100644
index 88e9679..0000000
--- a/parser/ParseOrderBy.hpp
+++ /dev/null
@@ -1,167 +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_PARSER_PARSE_ORDERBY_HPP_
-#define QUICKSTEP_PARSER_PARSE_ORDERBY_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "parser/ParseExpression.hpp"
-#include "parser/ParseTreeNode.hpp"
-#include "utility/Macros.hpp"
-#include "utility/PtrList.hpp"
-
-namespace quickstep {
-
-/** \addtogroup Parser
- *  @{
- */
-
-/**
- * @brief The parsed representation of an ORDER BY item consisting of
- *        an ordering expression and its ordering direction.
- */
-class ParseOrderByItem : public ParseTreeNode {
- public:
-  /**
-   * @brief Constructor.
-   *
-   * @param line_number The line number of the first token of this ORDER BY item
-   *                    in the SQL statement.
-   * @param column_number The column number of the first token of this ORDER BY
-   *                      item in the SQL statement.
-   * @param ordering_expression The ordering expression.
-   * @param is_ascending The optional ordering direction. The default value is
-   *                     true.
-   * @param nulls_first True if nulls are sorted before non-nulls.
-   *                    The default value is true when is_ascending is false,
-   *                    false otherwise.
-   */
-  ParseOrderByItem(const int line_number,
-                   const int column_number,
-                   ParseExpression *ordering_expression,
-                   const bool *is_ascending,
-                   const bool *nulls_first)
-      : ParseTreeNode(line_number, column_number),
-        ordering_expression_(ordering_expression),
-        is_ascending_(is_ascending == nullptr ? true : *is_ascending),
-        nulls_first_(nulls_first == nullptr ? !is_ascending_ : *nulls_first) {
-  }
-
-  /**
-   * @brief Destructor.
-   */
-  ~ParseOrderByItem() override {}
-
-  std::string getName() const override {
-    return "OrderByItem";
-  }
-
-  /**
-   * @return Ordering expression.
-   */
-  const ParseExpression* ordering_expression() const {
-    return ordering_expression_.get();
-  }
-
-  /**
-   * @return True if the ordering direction is ascending.
-   */
-  bool is_ascending() const {
-    return is_ascending_;
-  }
-
-  /**
-   * @return True if nulls are sorted before other values.
-   */
-  bool nulls_first() const {
-    return nulls_first_;
-  }
-
- protected:
-  void getFieldStringItems(std::vector<std::string> *inline_field_names,
-                           std::vector<std::string> *inline_field_values,
-                           std::vector<std::string> *non_container_child_field_names,
-                           std::vector<const ParseTreeNode*> *non_container_child_fields,
-                           std::vector<std::string> *container_child_field_names,
-                           std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override;
-
- private:
-  std::unique_ptr<ParseExpression> ordering_expression_;
-  bool is_ascending_;
-  bool nulls_first_;
-
-  DISALLOW_COPY_AND_ASSIGN(ParseOrderByItem);
-};
-
-/**
- * @brief The parsed representation of ORDER BY.
- */
-class ParseOrderBy : public ParseTreeNode {
- public:
-  /**
-   * @brief Constructor.
-   *
-   * @param line_number The line number of "ORDER" in the SQL statement.
-   * @param column_number The column number of "ORDER" in the SQL statement.
-   * @param order_by_items The ORDER BY expression and the ordering direction.
-   */
-  ParseOrderBy(const int line_number, const int column_number, PtrList<ParseOrderByItem> *order_by_items)
-      : ParseTreeNode(line_number, column_number), order_by_items_(order_by_items) {
-  }
-
-  /**
-   * @brief Destructor.
-   */
-  ~ParseOrderBy() override {}
-
-  /**
-   * @brief Gets the ORDER BY expressions.
-   *
-   * @return ORDER BY expressions.
-   */
-  const PtrList<ParseOrderByItem>* order_by_items() const {
-    return order_by_items_.get();
-  }
-
-  std::string getName() const override {
-    return "OrderBy";
-  }
-
- protected:
-  void getFieldStringItems(std::vector<std::string> *inline_field_names,
-                           std::vector<std::string> *inline_field_values,
-                           std::vector<std::string> *non_container_child_field_names,
-                           std::vector<const ParseTreeNode*> *non_container_child_fields,
-                           std::vector<std::string> *container_child_field_names,
-                           std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override;
-
- private:
-  std::unique_ptr<PtrList<ParseOrderByItem>> order_by_items_;
-
-  DISALLOW_COPY_AND_ASSIGN(ParseOrderBy);
-};
-
-/** @} */
-
-}  // namespace quickstep
-
-#endif /* QUICKSTEP_PARSER_PARSEORDERBY_HPP_ */

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParsePartitionClause.hpp
----------------------------------------------------------------------
diff --git a/parser/ParsePartitionClause.hpp b/parser/ParsePartitionClause.hpp
deleted file mode 100644
index d2912e7..0000000
--- a/parser/ParsePartitionClause.hpp
+++ /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.
- **/
-
-#ifndef QUICKSTEP_PARSER_PARSE_PARTITION_CLAUSE_HPP_
-#define QUICKSTEP_PARSER_PARSE_PARTITION_CLAUSE_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "parser/ParseLiteralValue.hpp"
-#include "parser/ParseString.hpp"
-#include "parser/ParseTreeNode.hpp"
-#include "utility/Macros.hpp"
-#include "utility/PtrList.hpp"
-
-namespace quickstep {
-
-/** \addtogroup Parser
- *  @{
- */
-
-/**
- * @brief A parsed representation of partition clause.
- */
-class ParsePartitionClause : public ParseTreeNode {
- public:
-  /**
-   * @brief Constructor.
-   *
-   * @param line_number The line number of "PARTITION CLAUSE" in the SQL statement.
-   * @param column_number The column number of "PARTITION CLAUSE" in the SQL statement.
-   * @param partition_type The type of partitioning to be made - Hash or Range
-   * @param attribute_name_list A list of attributes of the relation based on which the partitioning has to be done.
-   * @param num_partitions The number of partitions to be created.
-   */
-  ParsePartitionClause(const int line_number,
-                       const int column_number,
-                       ParseString *partition_type,
-                       PtrList<ParseString> *attribute_name_list,
-                       NumericParseLiteralValue *num_partitions)
-      : ParseTreeNode(line_number, column_number),
-        partition_type_(partition_type),
-        attribute_name_list_(attribute_name_list),
-        num_partitions_(num_partitions) {
-  }
-
-  /**
-   * @brief Destructor.
-   */
-  ~ParsePartitionClause() override {}
-
-  std::string getName() const override {
-    return "PartitionClause";
-  }
-
-  /**
-   * @brief Get the type of the partitioning to be created.
-   *
-   * @return The type of partitioning.
-   **/
-  const ParseString* partition_type() const {
-    return partition_type_.get();
-  }
-
-  /**
-   * @brief Get the list of attributes on which partitioning is supposed to be defined.
-   *
-   * @return The list of attributes on which partitioning is to be based on.
-   **/
-  const PtrList<ParseString>& attribute_name_list() const {
-    return *attribute_name_list_;
-  }
-
-  /**
-   * @brief Get the number of partitions.
-   *
-   * @return The number of partitions.
-   */
-  const NumericParseLiteralValue* num_partitions() const {
-    return num_partitions_.get();
-  }
-
- protected:
-  void getFieldStringItems(std::vector<std::string> *inline_field_names,
-                           std::vector<std::string> *inline_field_values,
-                           std::vector<std::string> *non_container_child_field_names,
-                           std::vector<const ParseTreeNode*> *non_container_child_fields,
-                           std::vector<std::string> *container_child_field_names,
-                           std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const override {
-    inline_field_names->push_back("partition_type");
-    inline_field_values->push_back(partition_type_->value());
-
-    if (attribute_name_list_.get() != nullptr) {
-      container_child_field_names->push_back("attribute_name_list");
-      container_child_fields->emplace_back();
-      for (const ParseString& attribute_name : *attribute_name_list_) {
-        container_child_fields->back().push_back(&attribute_name);
-      }
-    }
-
-    non_container_child_field_names->push_back("Number of Partitions");
-    non_container_child_fields->push_back(num_partitions_.get());
-  }
-
- private:
-  std::unique_ptr<ParseString> partition_type_;
-  std::unique_ptr<PtrList<ParseString>> attribute_name_list_;
-  std::unique_ptr<NumericParseLiteralValue> num_partitions_;
-
-  DISALLOW_COPY_AND_ASSIGN(ParsePartitionClause);
-};
-
-/** @} */
-
-}  // namespace quickstep
-
-#endif  // QUICKSTEP_PARSER_PARSE_PARTITION_CLAUSE_HPP_

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParsePredicate.cpp
----------------------------------------------------------------------
diff --git a/parser/ParsePredicate.cpp b/parser/ParsePredicate.cpp
deleted file mode 100644
index 9747b08..0000000
--- a/parser/ParsePredicate.cpp
+++ /dev/null
@@ -1,106 +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 "parser/ParsePredicate.hpp"
-
-#include <string>
-#include <vector>
-
-#include "parser/ParseExpression.hpp"
-#include "types/operations/comparisons/Comparison.hpp"
-
-namespace quickstep {
-
-std::string ParsePredicateComparison::getName() const {
-  return op_.getName();
-}
-
-void ParsePredicateComparison::getFieldStringItems(
-    std::vector<std::string> *inline_field_names,
-    std::vector<std::string> *inline_field_values,
-    std::vector<std::string> *non_container_child_field_names,
-    std::vector<const ParseTreeNode*> *non_container_child_fields,
-    std::vector<std::string> *container_child_field_names,
-    std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const {
-  non_container_child_field_names->push_back("left_operand");
-  non_container_child_field_names->push_back("right_operand");
-  non_container_child_fields->push_back(left_operand_.get());
-  non_container_child_fields->push_back(right_operand_.get());
-}
-
-void ParsePredicateNegation::getFieldStringItems(
-    std::vector<std::string> *inline_field_names,
-    std::vector<std::string> *inline_field_values,
-    std::vector<std::string> *non_container_child_field_names,
-    std::vector<const ParseTreeNode*> *non_container_child_fields,
-    std::vector<std::string> *container_child_field_names,
-    std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const {
-  non_container_child_field_names->push_back("");
-  non_container_child_fields->push_back(operand_.get());
-}
-
-void ParsePredicateBetween::getFieldStringItems(
-    std::vector<std::string> *inline_field_names,
-    std::vector<std::string> *inline_field_values,
-    std::vector<std::string> *non_container_child_field_names,
-    std::vector<const ParseTreeNode*> *non_container_child_fields,
-    std::vector<std::string> *container_child_field_names,
-    std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const {
-  non_container_child_field_names->push_back("check_operand");
-  non_container_child_fields->push_back(check_operand_.get());
-
-  non_container_child_field_names->push_back("lower_bound_operand");
-  non_container_child_fields->push_back(lower_bound_operand_.get());
-
-  non_container_child_field_names->push_back("upper_bound_operand");
-  non_container_child_fields->push_back(upper_bound_operand_.get());
-}
-
-void ParsePredicateWithList::getFieldStringItems(
-    std::vector<std::string> *inline_field_names,
-    std::vector<std::string> *inline_field_values,
-    std::vector<std::string> *non_container_child_field_names,
-    std::vector<const ParseTreeNode*> *non_container_child_fields,
-    std::vector<std::string> *container_child_field_names,
-    std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const {
-  container_child_field_names->push_back("");
-  container_child_fields->emplace_back();
-  for (const ParsePredicate &operand : operands_) {
-    container_child_fields->back().push_back(&operand);
-  }
-}
-
-void ParsePredicateInValueList::getFieldStringItems(
-    std::vector<std::string> *inline_field_names,
-    std::vector<std::string> *inline_field_values,
-    std::vector<std::string> *non_container_child_field_names,
-    std::vector<const ParseTreeNode*> *non_container_child_fields,
-    std::vector<std::string> *container_child_field_names,
-    std::vector<std::vector<const ParseTreeNode*>> *container_child_fields) const {
-  non_container_child_field_names->push_back("test_expression");
-  non_container_child_fields->push_back(test_expression_.get());
-
-  container_child_field_names->push_back("value_list");
-  container_child_fields->emplace_back();
-  for (const ParseExpression &value : *value_list_) {
-    container_child_fields->back().emplace_back(&value);
-  }
-}
-
-}  // namespace quickstep