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:54 UTC
[31/51] [abbrv] [partial] incubator-quickstep git commit: remove c++
files
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseAttributeDefinition.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseAttributeDefinition.cpp b/parser/ParseAttributeDefinition.cpp
deleted file mode 100644
index ec6508b..0000000
--- a/parser/ParseAttributeDefinition.cpp
+++ /dev/null
@@ -1,91 +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/ParseAttributeDefinition.hpp"
-
-#include <string>
-#include <vector>
-
-#include "parser/ParseString.hpp"
-#include "types/Type.hpp"
-#include "utility/PtrList.hpp"
-
-namespace quickstep {
-
-ParseAttributeDefinition::ParseAttributeDefinition(const int line_number,
- const int column_number,
- ParseString *name,
- ParseDataType *data_type,
- PtrList<ParseColumnConstraint> *constraint_list)
- : ParseTreeNode(line_number, column_number), name_(name), data_type_(data_type) {
- if (constraint_list != nullptr) {
- for (PtrList<ParseColumnConstraint>::const_iterator it = constraint_list->begin();
- it != constraint_list->end();
- ++it) {
- it->applyTo(this);
- }
-
- delete constraint_list;
- }
-}
-
-void ParseAttributeDefinition::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("name");
- inline_field_values->push_back(name_->value());
- inline_field_names->push_back("type");
- inline_field_values->push_back(data_type_->getType().getName());
-}
-
-void ParseColumnConstraintNull::applyTo(ParseAttributeDefinition *target) const {
- target->data_type_->type_ = &(target->data_type_->type_->getNullableVersion());
-}
-
-void ParseColumnConstraintNull::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("nullable");
- inline_field_values->push_back("true");
-}
-
-void ParseColumnConstraintNotNull::applyTo(ParseAttributeDefinition *target) const {
- target->data_type_->type_ = &(target->data_type_->type_->getNonNullableVersion());
-}
-
-void ParseColumnConstraintNotNull::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("nullable");
- inline_field_values->push_back("false");
-}
-
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseAttributeDefinition.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseAttributeDefinition.hpp b/parser/ParseAttributeDefinition.hpp
deleted file mode 100644
index 5c20d13..0000000
--- a/parser/ParseAttributeDefinition.hpp
+++ /dev/null
@@ -1,255 +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_ATTRIBUTE_DEFINITION_HPP_
-#define QUICKSTEP_PARSER_PARSE_ATTRIBUTE_DEFINITION_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "parser/ParseString.hpp"
-#include "parser/ParseTreeNode.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-
-class ParseColumnConstraint;
-class Type;
-
-template <class T> class PtrList;
-
-/** \addtogroup Parser
- * @{
- */
-
-/**
- * @brief Parsed representation of a data type.
- **/
-class ParseDataType {
- public:
- /**
- * @brief Constructor.
- *
- * @param type The Type of the data.
- **/
- explicit ParseDataType(const Type &type)
- : type_(&type) {
- }
-
- /**
- * @brief Get the type.
- *
- * @return The Type.
- **/
- const Type& getType() const {
- return *type_;
- }
-
- private:
- // Use a pointer instead of a reference so that it may be modified by column
- // constraints.
- const Type *type_;
-
- friend class ParseColumnConstraintNull;
- friend class ParseColumnConstraintNotNull;
-
- DISALLOW_COPY_AND_ASSIGN(ParseDataType);
-};
-
-/**
- * @brief Parsed representation of an attribute definition
- **/
-class ParseAttributeDefinition : public ParseTreeNode {
- 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 name The attribute name.
- * @param data_type The parsed data type (becomes owned by this
- * ParseAttributeDefinition).
- * @param constraint_list An optional list of column constraints (may be NULL
- * if no constraints).
- **/
- ParseAttributeDefinition(const int line_number,
- const int column_number,
- ParseString *name,
- ParseDataType *data_type,
- PtrList<ParseColumnConstraint> *constraint_list);
-
- /**
- * @brief Destructor
- **/
- ~ParseAttributeDefinition() override {}
-
- std::string getName() const override {
- return "AttributeDefinition";
- }
-
- /**
- * @brief Get the attribute name
- *
- * @return The attribute name
- **/
- const ParseString* name() const {
- return name_.get();
- }
-
- /**
- * @brief Get the parsed data type
- *
- * @return The data type
- **/
- const ParseDataType& data_type() const {
- return *data_type_;
- }
-
- 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> name_;
- std::unique_ptr<ParseDataType> data_type_;
-
- friend class ParseColumnConstraintNull;
- friend class ParseColumnConstraintNotNull;
-
- DISALLOW_COPY_AND_ASSIGN(ParseAttributeDefinition);
-};
-
-/**
- * @brief A column constraint that can be applied to an attribute definition.
- **/
-class ParseColumnConstraint : public ParseTreeNode {
- public:
- /**
- * @brief Virtual destructor.
- **/
- ~ParseColumnConstraint() override {
- }
-
- /**
- * @brief Apply this constraint to an attribute definition.
- *
- * @param target The attribute definition to modify with this constraint.
- **/
- virtual void applyTo(ParseAttributeDefinition *target) const = 0;
-
- protected:
- ParseColumnConstraint(const int line_number, const int column_number)
- : ParseTreeNode(line_number, column_number) {
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(ParseColumnConstraint);
-};
-
-/**
- * @brief A column constraint allowing NULL values.
- **/
-class ParseColumnConstraintNull: public ParseColumnConstraint {
- 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.
- **/
- ParseColumnConstraintNull(const int line_number, const int column_number)
- : ParseColumnConstraint(line_number, column_number) {
- }
-
- /**
- * @brief Destructor.
- */
- ~ParseColumnConstraintNull() override {
- }
-
- std::string getName() const override {
- return "NullablityColumnConstraint";
- }
-
- void applyTo(ParseAttributeDefinition *target) const override;
-
- 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(ParseColumnConstraintNull);
-};
-
-/**
- * @brief A column constraint disallowing NULL values.
- **/
-class ParseColumnConstraintNotNull: public ParseColumnConstraint {
- 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.
- **/
- ParseColumnConstraintNotNull(const int line_number, const int column_number)
- : ParseColumnConstraint(line_number, column_number) {
- }
-
- /**
- * @brief Destructor.
- */
- ~ParseColumnConstraintNotNull() override {
- }
-
- std::string getName() const override {
- return "NullablityColumnConstraint";
- }
-
- void applyTo(ParseAttributeDefinition *target) const override;
-
- 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(ParseColumnConstraintNotNull);
-};
-
-/** @} */
-
-} // namespace quickstep
-
-#endif // QUICKSTEP_PARSER_PARSE_ATTRIBUTE_DEFINITION_HPP_
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseBasicExpressions.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseBasicExpressions.cpp b/parser/ParseBasicExpressions.cpp
deleted file mode 100644
index b0b1247..0000000
--- a/parser/ParseBasicExpressions.cpp
+++ /dev/null
@@ -1,233 +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/ParseBasicExpressions.hpp"
-
-#include <string>
-#include <vector>
-
-#include "parser/ParseLiteralValue.hpp"
-#include "parser/ParseString.hpp"
-#include "types/operations/binary_operations/BinaryOperation.hpp"
-#include "types/operations/unary_operations/UnaryOperation.hpp"
-
-using std::string;
-
-namespace quickstep {
-
-void ParseScalarLiteral::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(literal_value_.get());
-}
-
-string ParseAttribute::generateName() const {
- string name;
- if (rel_name_ != nullptr) {
- name.append(rel_name_->value());
- name.append(".");
- }
- name.append(attr_name_->value());
- return name;
-}
-
-void ParseAttribute::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("attribute_name");
- inline_field_values->push_back(attr_name_->value());
-
- if (rel_name_ != nullptr) {
- inline_field_names->push_back("relation_name");
- inline_field_values->push_back(rel_name_->value());
- }
-}
-
-std::string ParseUnaryExpression::getName() const {
- return op_.getName();
-}
-
-string ParseUnaryExpression::generateName() const {
- string name(op_.getShortName());
- name.append(operand_->generateName());
- return name;
-}
-
-void ParseUnaryExpression::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());
-}
-
-std::string ParseBinaryExpression::getName() const {
- return op_.getName();
-}
-
-string ParseBinaryExpression::generateName() const {
- string name("(");
- name.append(left_operand_->generateName());
- name.append(op_.getShortName());
- name.append(right_operand_->generateName());
- name.push_back(')');
- return name;
-}
-
-void ParseBinaryExpression::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_fields->push_back(left_operand_.get());
-
- non_container_child_field_names->push_back("right_operand");
- non_container_child_fields->push_back(right_operand_.get());
-}
-
-std::string ParseFunctionCall::generateName() const {
- string name(name_->value());
- name.push_back('(');
- if (star_ != nullptr) {
- name.push_back('*');
- } else {
- if (is_distinct_) {
- name.append("DISTINCT ");
- }
- bool first = true;
- for (const ParseExpression &argument : *arguments_) {
- if (!first) {
- name.append(", ");
- } else {
- first = false;
- }
- name.append(argument.generateName());
- }
- }
- name.push_back(')');
- return name;
-}
-
-void ParseFunctionCall::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("name");
- inline_field_values->push_back(name_->value());
-
- if (is_distinct_) {
- inline_field_names->push_back("is_distinct");
- inline_field_values->push_back("true");
- }
-
- if (star_ != nullptr) {
- inline_field_names->push_back("is_star");
- inline_field_values->push_back("true");
- } else {
- for (const ParseExpression &argument : *arguments_) {
- non_container_child_field_names->push_back("");
- non_container_child_fields->push_back(&argument);
- }
-
- if (window_name_ != nullptr) {
- inline_field_names->push_back("window_name");
- inline_field_values->push_back(window_name_->value());
- }
-
- if (window_ != nullptr) {
- non_container_child_field_names->push_back("window");
- non_container_child_fields->push_back(window_.get());
- }
- }
-}
-
-std::string ParseExtractFunction::generateName() const {
- std::string name;
- name.append("EXTRACT(");
- name.append(extract_field_->value());
- name.append(" FROM ");
- name.append(date_expression_->generateName());
- name.push_back(')');
- return name;
-}
-
-void ParseExtractFunction::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("unit");
- inline_field_values->push_back(extract_field_->value());
-
- non_container_child_field_names->push_back("date_expression");
- non_container_child_fields->push_back(date_expression_.get());
-}
-
-std::string ParseSubstringFunction::generateName() const {
- std::string name;
- name.append("SUBSTRING(");
- name.append(operand_->generateName());
- name.append(" FROM ");
- name.append(std::to_string(start_position_));
- if (length_ != kDefaultLength) {
- name.append(" FOR ");
- name.append(std::to_string(length_));
- }
- name.push_back(')');
- return name;
-}
-
-void ParseSubstringFunction::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("start_position");
- inline_field_values->push_back(std::to_string(start_position_));
-
- inline_field_names->push_back("length");
- inline_field_values->push_back(std::to_string(length_));
-
- non_container_child_field_names->push_back("operand");
- non_container_child_fields->push_back(operand_.get());
-}
-
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseBasicExpressions.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseBasicExpressions.hpp b/parser/ParseBasicExpressions.hpp
deleted file mode 100644
index d8de669..0000000
--- a/parser/ParseBasicExpressions.hpp
+++ /dev/null
@@ -1,640 +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_BASIC_EXPRESSIONS_HPP_
-#define QUICKSTEP_PARSER_PARSE_BASIC_EXPRESSIONS_HPP_
-
-#include <cstddef>
-#include <limits>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "parser/ParseExpression.hpp"
-#include "parser/ParseLiteralValue.hpp"
-#include "parser/ParseString.hpp"
-#include "parser/ParseTreeNode.hpp"
-#include "parser/ParseWindow.hpp"
-#include "utility/Macros.hpp"
-#include "utility/PtrList.hpp"
-
-namespace quickstep {
-
-class BinaryOperation;
-class UnaryOperation;
-
-/** \addtogroup Parser
- * @{
- */
-
-/**
- * @brief The parsed representation of a literal value.
- **/
-class ParseScalarLiteral : public ParseExpression {
- public:
- /**
- * @brief Constructor.
- *
- * @param literal_value The parsed literal value to represent, which becomes
- * owned by this ParseScalarLiteral.
- **/
- explicit ParseScalarLiteral(ParseLiteralValue *literal_value)
- : ParseExpression(literal_value->line_number(),
- literal_value->column_number()),
- literal_value_(literal_value) {
- }
-
- /**
- * @brief Destructor.
- */
- ~ParseScalarLiteral() override {
- }
-
- /**
- * @brief Gets the parsed literal value.
- *
- * @return The parsed literal value.
- */
- const ParseLiteralValue* literal_value() const {
- return literal_value_.get();
- }
-
- ExpressionType getExpressionType() const override {
- return kScalarLiteral;
- }
-
- std::string getName() const override {
- return "Literal";
- }
-
- std::string generateName() const override {
- return literal_value_->generateName();
- }
-
- 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<ParseLiteralValue> literal_value_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseScalarLiteral);
-};
-
-
-/**
- * @brief The parsed representation of an attribute reference.
- **/
-class ParseAttribute : public ParseExpression {
- 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 attr_name The name of the attribute.
- * @param rel_name An optional relation name to qualify the attribute name
- * (by default, all relations in the FROM list will be searched for
- * the attribute).
- **/
- ParseAttribute(const int line_number,
- const int column_number,
- ParseString *attr_name,
- ParseString *rel_name = nullptr)
- : ParseExpression(line_number, column_number),
- attr_name_(attr_name),
- rel_name_(rel_name) {
- }
-
- /**
- * @brief Destructor.
- */
- ~ParseAttribute() override {}
-
- ExpressionType getExpressionType() const override {
- return kAttribute;
- }
-
- std::string getName() const override {
- return "AttributeReference";
- }
-
- /**
- * @return Attribute name.
- */
- const ParseString* attr_name() const {
- return attr_name_.get();
- }
-
- /**
- * @return Relation name.
- */
- const ParseString* rel_name() const {
- return rel_name_.get();
- }
-
- std::string generateName() const override;
-
- 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> attr_name_, rel_name_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseAttribute);
-};
-
-
-/**
- * @brief The parsed representation of an unary operation applied to an expression.
- **/
-class ParseUnaryExpression : public ParseExpression {
- 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 op The UnaryOperation from the quickstep type system to apply.
- * @param operand The parsed scalar representation of the unary operation's
- * argument, which becomes owned by this ParseScalarUnaryExpression.
- **/
- ParseUnaryExpression(const int line_number,
- const int column_number,
- const UnaryOperation &op,
- ParseExpression *operand)
- : ParseExpression(line_number, column_number),
- op_(op),
- operand_(operand) {
- }
-
- /**
- * @brief Destructor.
- */
- ~ParseUnaryExpression() override {
- }
-
- ExpressionType getExpressionType() const override {
- return kUnaryExpression;
- }
-
- std::string getName() const override;
-
- /**
- * @return The unary operation.
- */
- const UnaryOperation& op() const {
- return op_;
- }
-
- /**
- * @return The operand expression.
- */
- const ParseExpression* operand() const {
- return operand_.get();
- }
-
- std::string generateName() const override;
-
- 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 UnaryOperation &op_;
- std::unique_ptr<ParseExpression> operand_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseUnaryExpression);
-};
-
-/**
- * @brief The parsed representation of a binary operation applied to two
- * expressions.
- **/
-class ParseBinaryExpression : public ParseExpression {
- public:
- /**
- * @brief Constructor.
- *
- * @param line_number Line number of the binary operator token in the SQL statement.
- * @param column_number Column number of the binary operator token in the SQL statement.
- * @param op The BinaryOperation from the quickstep type system to apply.
- * @param left_operand The parsed scalar representation of the binary
- * operation's left argument, which becomes owned by this
- * ParseScalarBinaryExpression.
- * @param right_operand The parsed scalar representation of the binary
- * operation's right argument, which becomes owned by this
- * ParseScalarBinaryExpression.
- **/
- ParseBinaryExpression(const int line_number,
- const int column_number,
- const BinaryOperation &op,
- ParseExpression *left_operand,
- ParseExpression *right_operand)
- : ParseExpression(line_number, column_number),
- op_(op),
- left_operand_(left_operand),
- right_operand_(right_operand) {
- }
-
- /**
- * @brief Destructor.
- */
- ~ParseBinaryExpression() override {
- }
-
- ExpressionType getExpressionType() const override {
- return kBinaryExpression;
- }
-
- std::string getName() const override;
-
- /**
- * @return The binary operation.
- */
- const BinaryOperation& op() const {
- return op_;
- }
-
- /**
- * @return The left operand expression.
- */
- const ParseExpression* left_operand() const {
- return left_operand_.get();
- }
-
- /**
- * @return The right operand expression.
- */
- const ParseExpression* right_operand() const {
- return right_operand_.get();
- }
-
- std::string generateName() const override;
-
- 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 BinaryOperation &op_;
- std::unique_ptr<ParseExpression> left_operand_;
- std::unique_ptr<ParseExpression> right_operand_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseBinaryExpression);
-};
-
-/**
- * @brief The parsed representation of '*' as a function argument.
- */
-class ParseStar : public ParseTreeNode {
- public:
- ParseStar(const int line_number, const int column_number)
- : ParseTreeNode(line_number, column_number) {}
-
- std::string getName() const override {
- return "Star";
- }
-
- 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(ParseStar);
-};
-
-/**
- * @brief Parsed function call in the form of a name with a list of arguments in parentheses.
- */
-class ParseFunctionCall : public ParseExpression {
- public:
- /**
- * @brief Constructor.
- * @note Takes ownership of all pointers.
- *
- * @param line_number The line number of the first token of the function call.
- * @param column_number The column number of the first token of the first call.
- * @param is_distinct Whether this function call contains the DISTINCT keyword.
- * @param name The function name.
- * @param arguments The function argument list.
- */
- ParseFunctionCall(const int line_number,
- const int column_number,
- const bool is_distinct,
- ParseString *name,
- PtrList<ParseExpression> *arguments)
- : ParseExpression(line_number, column_number),
- is_distinct_(is_distinct),
- name_(name),
- arguments_(arguments) {
- }
-
- /**
- * @brief Constructor for a function call that has "*" as the argument.
- * @note Takes ownership of all pointers.
- *
- * @param line_number The line number of the first token of the function call.
- * @param column_number The column number of the first token of the function call.
- * @param name The function name.
- * @param star The parsed star.
- */
- ParseFunctionCall(const int line_number, const int column_number, ParseString *name, ParseStar *star)
- : ParseExpression(line_number, column_number),
- is_distinct_(false),
- name_(name),
- star_(star) {
- }
-
- /**
- * @brief Destructor.
- */
- ~ParseFunctionCall() override {
- }
-
- ExpressionType getExpressionType() const override {
- return kFunctionCall;
- }
-
- std::string getName() const override {
- return "FunctionCall";
- }
-
- /**
- * @return Whether this function call contains the DISTINCT keyword.
- */
- bool is_distinct() const {
- return is_distinct_;
- }
-
- /**
- * @return The function name.
- */
- const ParseString* name() const {
- return name_.get();
- }
-
- /**
- * @return The argument list.
- */
- const PtrList<ParseExpression>* arguments() const {
- return arguments_.get();
- }
-
- /**
- * @return The parsed star.
- */
- const ParseStar* star() const {
- return star_.get();
- }
-
- /**
- * @return The window name.
- **/
- const ParseString* window_name() const {
- return window_name_.get();
- }
-
- /**
- * @return The window.
- **/
- const ParseWindow* window() const {
- return window_.get();
- }
-
- /**
- * @brief Check if this function is a window aggregation function
- *
- * @return True if this function is a window aggregation function; false
- * otherwise.
- **/
- bool isWindow() const {
- return window_name_ != nullptr || window_ != nullptr;
- }
-
- /**
- * @brief Set the window name.
- * @param window_name The window name.
- **/
- void setWindowName(ParseString *window_name) {
- window_name_.reset(window_name);
- }
-
- /**
- * @brief Set the window.
- * @param window The window.
- **/
- void setWindow(ParseWindow *window) {
- window_.reset(window);
- }
-
- std::string generateName() const override;
-
- 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 bool is_distinct_;
- std::unique_ptr<ParseString> name_;
- // Either <arguments_> or <star_> is NULL.
- std::unique_ptr<PtrList<ParseExpression>> arguments_;
- std::unique_ptr<ParseStar> star_;
- // A window aggregation function should have either <window_name_> or <window_> but not both.
- // <window_name_> and <window_> will both be NULL if it is not a window function.
- std::unique_ptr<ParseString> window_name_;
- std::unique_ptr<ParseWindow> window_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseFunctionCall);
-};
-
-
-/**
- * @brief Parsed representation of EXTRACT(unit FROM date).
- */
-class ParseExtractFunction : public ParseExpression {
- public:
- /**
- * @brief Constructor.
- *
- * @param line_number The line number of the token "extract" in the statement.
- * @param column_number The column number of the token "extract in the statement.
- * @param extract_field The field to extract.
- * @param source_expression The expression to extract a field from.
- */
- ParseExtractFunction(const int line_number,
- const int column_number,
- ParseString *extract_field,
- ParseExpression *date_expression)
- : ParseExpression(line_number, column_number),
- extract_field_(extract_field),
- date_expression_(date_expression) {
- }
-
- ExpressionType getExpressionType() const override {
- return kExtract;
- }
-
- std::string getName() const override {
- return "Extract";
- }
-
- /**
- * @return The field to extract.
- */
- const ParseString* extract_field() const {
- return extract_field_.get();
- }
-
- /**
- * @return The expression to extract a field from.
- */
- const ParseExpression* date_expression() const {
- return date_expression_.get();
- }
-
- std::string generateName() const override;
-
- 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> extract_field_;
- std::unique_ptr<ParseExpression> date_expression_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseExtractFunction);
-};
-
-
-/**
- * @brief Parsed representation of the substring function.
- */
-class ParseSubstringFunction : public ParseExpression {
- public:
- static constexpr std::size_t kDefaultLength = std::numeric_limits<std::size_t>::max();
-
- /**
- * @brief Constructor.
- *
- * @param line_number The line number of the first token of the function call.
- * @param column_number The column number of the first token of the function call.
- * @param operand The operand of the substring.
- * @param start_position The 1-based starting position of the substring.
- * @param length Optional substring length.
- */
- ParseSubstringFunction(const int line_number,
- const int column_number,
- ParseExpression *operand,
- const std::size_t start_position,
- const std::size_t length = kDefaultLength)
- : ParseExpression(line_number, column_number),
- operand_(operand),
- start_position_(start_position),
- length_(length) {}
-
- ExpressionType getExpressionType() const override {
- return kSubstring;
- }
-
- std::string getName() const override {
- return "Substring";
- }
-
- /**
- * @return The operand of the substring.
- */
- const ParseExpression* operand() const {
- return operand_.get();
- }
-
- /**
- * @return The 1-based starting position of the substring.
- */
- std::size_t start_position() const {
- return start_position_;
- }
-
- /**
- * @return Then substring length.
- */
- std::size_t length() const {
- return length_;
- }
-
- std::string generateName() const override;
-
- 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> operand_;
- const std::size_t start_position_;
- const std::size_t length_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseSubstringFunction);
-};
-
-/** @} */
-
-} // namespace quickstep
-
-#endif // QUICKSTEP_PARSER_PARSE_BASIC_EXPRESSIONS_HPP_
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseBlockProperties.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseBlockProperties.cpp b/parser/ParseBlockProperties.cpp
deleted file mode 100644
index 31c30a0..0000000
--- a/parser/ParseBlockProperties.cpp
+++ /dev/null
@@ -1,31 +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/ParseBlockProperties.hpp"
-
-#include <string>
-
-namespace quickstep {
-
-const std::string ParseBlockProperties::kKeyBlockSizeMB = "blocksizemb";
-const std::string ParseBlockProperties::kKeyCompress = "compress";
-const std::string ParseBlockProperties::kKeySort = "sort";
-const std::string ParseBlockProperties::kKeyType = "type";
-
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseBlockProperties.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseBlockProperties.hpp b/parser/ParseBlockProperties.hpp
deleted file mode 100644
index ce0cd92..0000000
--- a/parser/ParseBlockProperties.hpp
+++ /dev/null
@@ -1,256 +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_BLOCK_PROPERTIES_HPP_
-#define QUICKSTEP_PARSER_PARSE_BLOCK_PROPERTIES_HPP_
-
-#include <cstdint>
-#include <memory>
-#include <set>
-#include <string>
-#include <vector>
-
-#include "parser/ParseKeyValue.hpp"
-#include "parser/ParseString.hpp"
-#include "parser/ParseTreeNode.hpp"
-#include "utility/Macros.hpp"
-#include "utility/PtrList.hpp"
-#include "utility/StringUtil.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-
-/** \addtogroup Parser
- * @{
- */
-
-/**
- * @brief Encapsulates the BlockProperties key-value list. Makes the job
- * of resolving BlockProperties easy.
- */
-class ParseBlockProperties : public ParseTreeNode {
- // Valid key names for the BlockProperties.
- static const std::string kKeyBlockSizeMB;
- static const std::string kKeyCompress;
- static const std::string kKeySort;
- static const std::string kKeyType;
-
- public:
- /**
- * @brief Constructor.
- *
- * @param line_number Beginning line number.
- * @param column_number Beginning column number.
- * @param properties PtrList to the KeyValues.
- */
- ParseBlockProperties(int line_number,
- int column_number,
- PtrList<ParseKeyValue> *properties)
- : ParseTreeNode(line_number, column_number),
- properties_(properties) { }
-
- /**
- * @return The name of this entity.
- */
- std::string getName() const override {
- return "BlockProperties";
- }
-
- /**
- * @brief Returns the first repeated key contained in the key-value list.
- * @details A repeated key is any 2 key-values with case-insensitive matching
- * key names.
- *
- * @return A pointer to the first repeated key-value or nullptr if there
- * are no repetitions.
- */
- const ParseKeyValue* getFirstRepeatedKeyValue() const {
- std::set<std::string> seen_keys;
- for (const ParseKeyValue &key_value : *properties_) {
- std::string lower_key = ToLower(key_value.key()->value());
- std::set<std::string>::iterator itr = seen_keys.find(lower_key);
- if (itr != seen_keys.end()) {
- return &key_value;
- }
- seen_keys.insert(lower_key);
- }
- return nullptr;
- }
-
- /**
- * @brief Returns the first invalid key contained in the key-value list.
- * @details An invalid key-value is a key-value with a key whose case-insensitive
- * string does not match one of the valid key names.
- *
- * @return A pointer to the first invalid key-value or nullptr if there none.
- */
- const ParseKeyValue* getFirstInvalidKeyValue() const {
- std::set<std::string> valid_names({kKeyCompress,
- kKeyType, kKeySort, kKeyBlockSizeMB});
- for (const ParseKeyValue &key_value : *properties_) {
- std::string lower_key = ToLower(key_value.key()->value());
- std::set<std::string>::iterator itr = valid_names.find(lower_key);
- if (itr == valid_names.end()) {
- return &key_value;
- }
- }
- return nullptr;
- }
-
- /**
- * @brief Gets the ParseString value of the type property.
- *
- * @return ParseString value of the type property or nullptr if the type
- * was incorrect ParseKeyValue type or not specified.
- */
- const ParseString* getType() const {
- const ParseKeyValue *type_key_value = getKeyValueByName(kKeyType);
- if (type_key_value == nullptr) {
- return nullptr;
- }
- if (type_key_value->getKeyValueType() !=
- ParseKeyValue::KeyValueType::kStringString) {
- return nullptr;
- }
- return static_cast<const ParseKeyStringValue*>(type_key_value)->value();
- }
-
- /**
- * @brief Gets the ParseString value of the sort property.
- *
- * @return ParseString value of the sort property or nullptr if the type
- * was not a ParseKeyStringValue or was not specified.
- */
- const ParseString* getSort() const {
- const ParseKeyValue *sort_key_value = getKeyValueByName(kKeySort);
- if (sort_key_value == nullptr) {
- return nullptr;
- }
- if (sort_key_value->getKeyValueType() !=
- ParseKeyValue::KeyValueType::kStringString) {
- return nullptr;
- }
- return static_cast<const ParseKeyStringValue*>(sort_key_value)->value();
- }
-
- /**
- * @brief Get the list of compressed column names.
- * @note Check compressAll() first to see if all columns are to be compressed.
- *
- * @return A list of column names to compress.
- */
- const PtrList<ParseString>* getCompressed() const {
- const ParseKeyValue *compress_key_value = getKeyValueByName(kKeyCompress);
- if (compress_key_value == nullptr) {
- return nullptr;
- }
- if (compress_key_value->getKeyValueType() !=
- ParseKeyValue::KeyValueType::kStringStringList) {
- return nullptr;
- }
- return static_cast<const ParseKeyStringList*>(compress_key_value)->value();
- }
-
- /**
- * @brief True if the user specified to compress all columns.
- */
- bool compressAll() const {
- const ParseKeyValue *compress_key_value = getKeyValueByName(kKeyCompress);
- if (compress_key_value == nullptr) {
- return false;
- }
- if (compress_key_value->getKeyValueType() !=
- ParseKeyValue::KeyValueType::kStringString) {
- return false;
- }
- // The StringString value from the parser should always be, 'ALL'.
- DCHECK(static_cast<const ParseKeyStringValue*>(compress_key_value)
- ->value()->value().compare("ALL") == 0)
- << "BlockProperties got an invalid COMPRESS value.";
- return true;
- }
-
- /**
- * @return Pointer to the blocksize property, nullptr if not specified.
- */
- const ParseKeyValue* getBlockSizeMb() const {
- return getKeyValueByName(kKeyBlockSizeMB);
- }
-
- /**
- * @return the blocksizemb property or -1 if not specified or not an int.
- */
- std::int64_t getBlockSizeMbValue() const {
- const ParseKeyValue *size_key_value = getKeyValueByName(kKeyBlockSizeMB);
- if (size_key_value == nullptr) {
- return -1;
- }
- if (size_key_value->getKeyValueType() !=
- ParseKeyValue::KeyValueType::kStringInteger) {
- return -1;
- }
- std::int64_t numeric_value =
- static_cast<const ParseKeyIntegerValue*>(size_key_value)->value()->long_value();
- return numeric_value;
- }
-
- /**
- * @return True if the user specified the size property. Note that returning
- * true does not mean the property was valid.
- */
- bool hasBlockSizeMb() const {
- return getKeyValueByName(kKeyBlockSizeMB) != nullptr;
- }
-
- 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 &block_property : *properties_) {
- non_container_child_field_names->push_back("block_property");
- non_container_child_fields->push_back(&block_property);
- }
- }
-
- private:
- const ParseKeyValue* getKeyValueByName(const std::string &name) const {
- // Get the first occurance of this name.
- for (const ParseKeyValue &key_value : *properties_) {
- if (ToLower(key_value.key()->value()).compare(name) == 0) {
- return &key_value;
- }
- }
- return nullptr;
- }
-
- std::unique_ptr<PtrList<ParseKeyValue> > properties_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseBlockProperties);
-};
-
-/** @} */
-
-} // namespace quickstep
-
-#endif /* QUICKSTEP_PARSER_PARSE_BLOCK_PROPERTIES_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseCaseExpressions.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseCaseExpressions.cpp b/parser/ParseCaseExpressions.cpp
deleted file mode 100644
index 47f2a33..0000000
--- a/parser/ParseCaseExpressions.cpp
+++ /dev/null
@@ -1,131 +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/ParseCaseExpressions.hpp"
-
-#include <memory>
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include "parser/ParseExpression.hpp"
-#include "parser/ParsePredicate.hpp"
-#include "parser/ParseTreeNode.hpp"
-
-namespace quickstep {
-
-void ParseSimpleWhenClause::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("condition_operand");
- non_container_child_fields->push_back(condition_operand_.get());
-
- non_container_child_field_names->push_back("result_expression");
- non_container_child_fields->push_back(result_expression_.get());
-}
-
-void ParseSearchedWhenClause::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("condition_predicate");
- non_container_child_fields->push_back(condition_predicate_.get());
-
- non_container_child_field_names->push_back("result_expression");
- non_container_child_fields->push_back(result_expression_.get());
-}
-
-std::string ParseSimpleCaseExpression::generateName() const {
- std::ostringstream out;
- out << "CASE " << case_operand_->generateName();
- for (const ParseSimpleWhenClause &when_clause : *when_clauses_) {
- out << " WHEN " << when_clause.condition_operand()->generateName()
- << " THEN " << when_clause.result_expression()->generateName();
- }
- if (else_result_expression_ != nullptr) {
- out << " ELSE " << else_result_expression_->generateName();
- }
- out << " END";
- return out.str();
-}
-
-void ParseSimpleCaseExpression::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("case_operand");
- non_container_child_fields->push_back(case_operand_.get());
-
- container_child_field_names->push_back("when_clauses");
- container_child_fields->emplace_back();
- for (const ParseSimpleWhenClause &when_clause : *when_clauses_) {
- container_child_fields->back().push_back(&when_clause);
- }
-
- if (else_result_expression_ != nullptr) {
- non_container_child_field_names->push_back("else_result_expression");
- non_container_child_fields->push_back(else_result_expression_.get());
- }
-}
-
-std::string ParseSearchedCaseExpression::generateName() const {
- std::ostringstream out;
- out << "CASE";
- for (const ParseSearchedWhenClause &when_clause : *when_clauses_) {
- // TODO(jianqiao): implement generateName() for Predicate.
- out << " WHEN " << when_clause.condition_predicate()->getShortString()
- << " THEN " << when_clause.result_expression()->generateName();
- }
- if (else_result_expression_ != nullptr) {
- out << " ELSE " << else_result_expression_->generateName();
- }
- out << " END";
- return out.str();
-}
-
-void ParseSearchedCaseExpression::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("when_clauses");
- container_child_fields->emplace_back();
- for (const ParseSearchedWhenClause &when_clause : *when_clauses_) {
- container_child_fields->back().push_back(&when_clause);
- }
-
- if (else_result_expression_ != nullptr) {
- non_container_child_field_names->push_back("else_result_expression");
- non_container_child_fields->push_back(else_result_expression_.get());
- }
-}
-
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseCaseExpressions.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseCaseExpressions.hpp b/parser/ParseCaseExpressions.hpp
deleted file mode 100644
index 6bc0b00..0000000
--- a/parser/ParseCaseExpressions.hpp
+++ /dev/null
@@ -1,315 +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_CASE_EXPRESSIONS_HPP_
-#define QUICKSTEP_PARSER_PARSE_CASE_EXPRESSIONS_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "parser/ParseExpression.hpp"
-#include "parser/ParsePredicate.hpp"
-#include "parser/ParseTreeNode.hpp"
-#include "utility/Macros.hpp"
-#include "utility/PtrVector.hpp"
-
-namespace quickstep {
-
-/** \addtogroup Parser
- * @{
- */
-
-/**
- * @brief The parsed representation of a WHEN clause in a simple CASE
- * expression (WHEN <condition operand> THEN <result expression>).
- */
-class ParseSimpleWhenClause : public ParseTreeNode {
- public:
- /**
- * @brief Constructor. Takes ownership of all pointers.
- *
- * @param line_number The line number of "WHEN" in the SQL statement.
- * @param column_number The column number of "WHEN" in the SQL statement.
- * @param check_operand The condition operand to be compared with the
- * CASE operand (not in this class) of the CASE
- * expression.
- * @param result_expression The result expression for this condition.
- */
- ParseSimpleWhenClause(int line_number,
- int column_number,
- ParseExpression *condition_operand,
- ParseExpression *result_expression)
- : ParseTreeNode(line_number, column_number),
- condition_operand_(condition_operand),
- result_expression_(result_expression) {
- }
-
- std::string getName() const override {
- return "SimpleWhenClause";
- }
-
- /**
- * @return The condition operand.
- */
- const ParseExpression* condition_operand() const {
- return condition_operand_.get();
- }
-
- /**
- * @return The result expression for this condition.
- */
- const ParseExpression* result_expression() const {
- return result_expression_.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:
- std::unique_ptr<ParseExpression> condition_operand_;
- std::unique_ptr<ParseExpression> result_expression_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseSimpleWhenClause);
-};
-
-/**
- * @brief The parsed representation of a WHEN clause in a searched CASE
- * expression (WHEN <condition predicate> THEN <result expression>).
- *
- */
-class ParseSearchedWhenClause : public ParseTreeNode {
- public:
- /**
- * @brief Constructor. Takes ownership of all pointers.
- *
- * @param line_number The line number of "WHEN" in the SQL statement.
- * @param column_number The column number of "WHEN" in the SQL statement.
- * @param condition_predicate The condition predicate.
- * @param result_expression The result expression for this condition.
- */
- ParseSearchedWhenClause(int line_number,
- int column_number,
- ParsePredicate *condition_predicate,
- ParseExpression *result_expression)
- : ParseTreeNode(line_number, column_number),
- condition_predicate_(condition_predicate),
- result_expression_(result_expression) {
- }
-
- std::string getName() const override {
- return "SearchedWhenClause";
- }
-
- /**
- * @return The condition predicate.
- */
- const ParsePredicate* condition_predicate() const {
- return condition_predicate_.get();
- }
-
- /**
- * @return The result expression.
- */
- const ParseExpression* result_expression() const {
- return result_expression_.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:
- std::unique_ptr<ParsePredicate> condition_predicate_;
- std::unique_ptr<ParseExpression> result_expression_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseSearchedWhenClause);
-};
-
-/**
- * @brief The parsed representation of a simple CASE expression:
- * CASE <case operand>
- * WHEN <condition_operand> THEN <result_expression>
- * [...n]
- * [ELSE <else_result_expression>]
- * END
- * It returns the <result_expression> of the first <case operand> = <when_operand>
- * that evaluates to true; if none is found and <else_result_expression> exists,
- * returns <else_result_expression>; otherwise, returns NULL.
- **/
-class ParseSimpleCaseExpression : public ParseExpression {
- public:
- /**
- * @brief Constructor. Takes ownership of all pointers.
- *
- * @param line_number The line number of "CASE" in the SQL statement.
- * @param column_number The column number of "CASE" in the SQL statement.
- * @param case_operand The CASE operand.
- * @param when_clauses A vector of WHEN clauses, each having a check operand to
- * be compared with the CASE operand and a result expression
- * to be evaluated if the condition is satisfied.
- * @param else_result_expression Optional ELSE result expression.
- */
- ParseSimpleCaseExpression(int line_number,
- int column_number,
- ParseExpression *case_operand,
- PtrVector<ParseSimpleWhenClause> *when_clauses,
- ParseExpression *else_result_expression)
- : ParseExpression(line_number, column_number),
- case_operand_(case_operand),
- when_clauses_(when_clauses),
- else_result_expression_(else_result_expression) {
- }
-
- std::string getName() const override {
- return "SimpleCaseExpression";
- }
-
- ExpressionType getExpressionType() const override {
- return kSimpleCaseExpression;
- }
-
- /**
- * @return The CASE operand.
- */
- const ParseExpression* case_operand() const {
- return case_operand_.get();
- }
-
- /**
- * @return The vector of WHEN clauses.
- */
- const PtrVector<ParseSimpleWhenClause>* when_clauses() const {
- return when_clauses_.get();
- }
-
- /**
- * @return The ELSE result expression. Can be NULL.
- */
- const ParseExpression* else_result_expression() const {
- return else_result_expression_.get();
- }
-
- std::string generateName() const override;
-
- 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> case_operand_;
- std::unique_ptr<PtrVector<ParseSimpleWhenClause>> when_clauses_;
- std::unique_ptr<ParseExpression> else_result_expression_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseSimpleCaseExpression);
-};
-
-/**
- * @brief The parsed representation of a searched CASE expression:
- * CASE
- * WHEN <condition_predicate> THEN <result_expression>
- * [...n]
- * [ELSE <else_result_expression>]
- * END
- * It returns the <result_expression> of the first <condition_predicate>
- * that evaluates to true; if none is found and <else_result_expression> exists,
- * returns <else_result_expression>; otherwise, returns NULL.
- */
-class ParseSearchedCaseExpression : public ParseExpression {
- public:
- /**
- * @brief Constructor. Takes ownership of all pointers.
- *
- * @param line_number The line number of "CASE" in the SQL statement.
- * @param column_number The column number of "CASE" in the SQL statement.
- * @param when_clauses A vector of WHEN clauses, each having a predicate
- * and a result expression to be evaluate if
- * the predicate evaluates to true.
- * @param else_result_expression Optional ELSE result expression.
- */
- ParseSearchedCaseExpression(int line_number,
- int column_number,
- PtrVector<ParseSearchedWhenClause> *when_clauses,
- ParseExpression *else_result_expression)
- : ParseExpression(line_number, column_number),
- when_clauses_(when_clauses),
- else_result_expression_(else_result_expression) {
- }
-
- std::string getName() const override {
- return "SearchedCaseExpression";
- }
-
- ExpressionType getExpressionType() const override {
- return kSearchedCaseExpression;
- }
-
- /**
- * @return The vector of WHEN clauses.
- */
- const PtrVector<ParseSearchedWhenClause>* when_clauses() const {
- return when_clauses_.get();
- }
-
- /**
- * @return The ELSE result expression. Can be NULL.
- */
- const ParseExpression* else_result_expression() const {
- return else_result_expression_.get();
- }
-
- std::string generateName() const override;
-
- 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<PtrVector<ParseSearchedWhenClause>> when_clauses_;
- std::unique_ptr<ParseExpression> else_result_expression_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseSearchedCaseExpression);
-};
-
-/** @} */
-
-} // namespace quickstep
-
-#endif /* QUICKSTEP_PARSER_PARSE_CASE_EXPRESSIONS_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseExpression.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseExpression.hpp b/parser/ParseExpression.hpp
deleted file mode 100644
index 1b9ade4..0000000
--- a/parser/ParseExpression.hpp
+++ /dev/null
@@ -1,82 +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_EXPRESSION_HPP_
-#define QUICKSTEP_PARSER_PARSE_EXPRESSION_HPP_
-
-#include <string>
-
-#include "parser/ParseTreeNode.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-
-/** \addtogroup Parser
- * @{
- */
-
-/**
- * @brief The parsed representation of an expression.
- **/
-class ParseExpression : public ParseTreeNode {
- public:
- enum ExpressionType {
- kAttribute,
- kBinaryExpression,
- kExtract,
- kFunctionCall,
- kScalarLiteral,
- kSearchedCaseExpression,
- kSimpleCaseExpression,
- kSubqueryExpression,
- kSubstring,
- kUnaryExpression,
- };
-
- /**
- * @brief Virtual destructor.
- **/
- ~ParseExpression() override {
- }
-
- /**
- * @return The expression type.
- */
- virtual ExpressionType getExpressionType() const = 0;
-
- /**
- * @brief Get a human-readable representation of this expression.
- *
- * @return The human-readable form of this expression.
- **/
- virtual std::string generateName() const = 0;
-
- protected:
- ParseExpression(const int line_number, const int column_number)
- : ParseTreeNode(line_number, column_number) {
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(ParseExpression);
-};
-
-
-} // namespace quickstep
-
-#endif /* QUICKSTEP_PARSER_PARSE_EXPRESSION_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseGeneratorTableReference.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseGeneratorTableReference.cpp b/parser/ParseGeneratorTableReference.cpp
deleted file mode 100644
index d8f5a48..0000000
--- a/parser/ParseGeneratorTableReference.cpp
+++ /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.
- **/
-
-#include "parser/ParseGeneratorTableReference.hpp"
-
-#include <string>
-#include <vector>
-
-namespace quickstep {
-
-class ParseTreeNode;
-
-void ParseGeneratorTableReference::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(generator_function_.get());
-}
-
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseGeneratorTableReference.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseGeneratorTableReference.hpp b/parser/ParseGeneratorTableReference.hpp
deleted file mode 100644
index 4604b87..0000000
--- a/parser/ParseGeneratorTableReference.hpp
+++ /dev/null
@@ -1,93 +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_GENERATOR_TABLE_REFERENCE_HPP_
-#define QUICKSTEP_PARSER_PARSE_GENERATOR_TABLE_REFERENCE_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "parser/ParseBasicExpressions.hpp"
-#include "parser/ParseTableReference.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-
-class ParseTreeNode;
-
-/** \addtogroup Parser
- * @{
- */
-
-/**
- * @brief A table that is generated by a generator function.
- */
-class ParseGeneratorTableReference : public ParseTableReference {
- public:
- /**
- * @brief Constructor. Takes ownership of \p generator_function.
- *
- * @param line_number The line number of the first token of the table reference.
- * @param column_number The column number of the first token of the table reference.
- * @param generator_function_ The parsed generator function.
- */
- ParseGeneratorTableReference(const int line_number,
- const int column_number,
- ParseFunctionCall *generator_function)
- : ParseTableReference(line_number, column_number),
- generator_function_(generator_function) {
- }
-
- /**
- * @brief Destructor.
- */
- ~ParseGeneratorTableReference() override {}
-
- TableReferenceType getTableReferenceType() const override {
- return kGeneratorTableReference;
- }
-
- std::string getName() const override { return "TableGenerator"; }
-
- /**
- * @return The parsed generator function.
- */
- const ParseFunctionCall* generator_function() const { return generator_function_.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:
- std::unique_ptr<ParseFunctionCall> generator_function_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseGeneratorTableReference);
-};
-
-/** @} */
-
-} // namespace quickstep
-
-#endif /* QUICKSTEP_PARSER_PARSE_GENERATOR_TABLE_REFERENCE_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseGroupBy.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseGroupBy.cpp b/parser/ParseGroupBy.cpp
deleted file mode 100644
index 324a4c6..0000000
--- a/parser/ParseGroupBy.cpp
+++ /dev/null
@@ -1,41 +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/ParseGroupBy.hpp"
-
-#include <string>
-#include <vector>
-
-#include "parser/ParseExpression.hpp"
-
-namespace quickstep {
-
-void ParseGroupBy::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 ParseExpression &group_by_expression : *grouping_expressions_) {
- non_container_child_field_names->push_back("");
- non_container_child_fields->push_back(&group_by_expression);
- }
-}
-
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseGroupBy.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseGroupBy.hpp b/parser/ParseGroupBy.hpp
deleted file mode 100644
index 1e36cd0..0000000
--- a/parser/ParseGroupBy.hpp
+++ /dev/null
@@ -1,91 +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_GROUP_BY_HPP_
-#define QUICKSTEP_PARSER_PARSE_GROUP_BY_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 representaiton of a GROUP BY clause.
- */
-class ParseGroupBy : public ParseTreeNode {
- public:
- /**
- * @brief Constructor.
- *
- * @param line_number The line number of "GROUP" in the SQL statement.
- * @param column_number The column number of "GROUP" in the SQL statement.
- * @param group_by_expressions The group by expressions.
- */
- ParseGroupBy(const int line_number, const int column_number, PtrList<ParseExpression> *grouping_expressions)
- : ParseTreeNode(line_number, column_number),
- grouping_expressions_(grouping_expressions) {
- }
-
- /**
- * @brief Destructor.
- */
- ~ParseGroupBy() override {}
-
- /**
- * @brief Gets the GROUP BY expressions.
- *
- * @return GROUP BY expressions.
- */
- const PtrList<ParseExpression>* grouping_expressions() const {
- return grouping_expressions_.get();
- }
-
- std::string getName() const override {
- return "GroupBy";
- }
-
- 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<ParseExpression>> grouping_expressions_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseGroupBy);
-};
-
-/** @} */
-
-} // namespace quickstep
-
-#endif /* QUICKSTEP_PARSER_PARSEGROUPBY_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseHaving.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseHaving.cpp b/parser/ParseHaving.cpp
deleted file mode 100644
index 277f922..0000000
--- a/parser/ParseHaving.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/ParseHaving.hpp"
-
-#include <string>
-#include <vector>
-
-#include "parser/ParsePredicate.hpp"
-
-namespace quickstep {
-
-void ParseHaving::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(having_predicate_.get());
-}
-
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseHaving.hpp
----------------------------------------------------------------------
diff --git a/parser/ParseHaving.hpp b/parser/ParseHaving.hpp
deleted file mode 100644
index 1059a7a..0000000
--- a/parser/ParseHaving.hpp
+++ /dev/null
@@ -1,89 +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_HAVING_HPP_
-#define QUICKSTEP_PARSER_PARSE_HAVING_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "parser/ParsePredicate.hpp"
-#include "parser/ParseTreeNode.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-
-/** \addtogroup Parser
- * @{
- */
-
-/**
- * @brief The parsed representation of HAVING.
- */
-class ParseHaving : public ParseTreeNode {
- public:
- /**
- * @brief Constructor.
- *
- * @param line_number The line number of "HAVING" in the SQL statement.
- * @param column_number The column number of "HAVING" in the SQL statement.
- * @param having_predicate The HAVING predicate.
- */
- ParseHaving(const int line_number, const int column_number, ParsePredicate *having_predicate)
- : ParseTreeNode(line_number, column_number), having_predicate_(having_predicate) {
- }
-
- /**
- * @brief Destructor.
- */
- ~ParseHaving() override {}
-
- /**
- * @brief Gets the HAVING predicate.
- *
- * @return HAVING predicate
- */
- const ParsePredicate *having_predicate() const {
- return having_predicate_.get();
- }
-
- std::string getName() const override {
- return "HAVING";
- }
-
- 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<ParsePredicate> having_predicate_;
-
- DISALLOW_COPY_AND_ASSIGN(ParseHaving);
-};
-
-/** @} */
-
-} // namespace quickstep
-
-#endif /* QUICKSTEP_PARSER_PARSEHAVING_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/parser/ParseIndexProperties.cpp
----------------------------------------------------------------------
diff --git a/parser/ParseIndexProperties.cpp b/parser/ParseIndexProperties.cpp
deleted file mode 100644
index 8268b5c..0000000
--- a/parser/ParseIndexProperties.cpp
+++ /dev/null
@@ -1,29 +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/ParseIndexProperties.hpp"
-
-namespace quickstep {
- // Initialize constants for various index properties.
- const char *BitWeavingIndexProperties::kBitWeavingType = "type";
- const char *BloomFilterIndexProperties::kBloomFilterSizeInBytes = "size";
- const char *BloomFilterIndexProperties::kBloomFilterNumHashes = "num_hashes";
- const char *BloomFilterIndexProperties::kBloomFilterProjectElementCount = "projected_element_count";
-
-} // namespace quickstep