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:30 UTC
[07/51] [abbrv] [partial] incubator-quickstep git commit: remove c++
files
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/OptimizerLogicalModule.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/OptimizerLogicalModule.hpp b/query_optimizer/logical/OptimizerLogicalModule.hpp
deleted file mode 100644
index fe05718..0000000
--- a/query_optimizer/logical/OptimizerLogicalModule.hpp
+++ /dev/null
@@ -1,24 +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.
- **/
-
-/** @defgroup OptimizerLogical
- * @ingroup QueryOptimizer
- *
- * Logical operators used in the query optimizer.
- **/
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/PatternMatcher.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/PatternMatcher.hpp b/query_optimizer/logical/PatternMatcher.hpp
deleted file mode 100644
index b931ace..0000000
--- a/query_optimizer/logical/PatternMatcher.hpp
+++ /dev/null
@@ -1,144 +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_QUERY_OPTIMIZER_LOGICAL_PATTERN_MATCHER_HPP_
-#define QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_PATTERN_MATCHER_HPP_
-
-#include <memory>
-#include <type_traits>
-
-#include "query_optimizer/logical/LogicalType.hpp"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-class Aggregate;
-class BinaryJoin;
-class CopyFrom;
-class CreateTable;
-class DeleteTuples;
-class DropTable;
-class Filter;
-class HashJoin;
-class InsertTuple;
-class Join;
-class MultiwayCartesianJoin;
-class NestedLoopsJoin;
-class Project;
-class SharedSubplanReference;
-class Sort;
-class TableReference;
-class TopLevelPlan;
-class UpdateTable;
-class WindowAggregate;
-
-/** \addtogroup OptimizerLogical
- * @{
- */
-
-/**
- * @brief Templated matcher for each Logical node class.
- *
- * @param LogicalClass The logical class for the logical node to be matched with.
- * @param logical_types All the logical types of the logical class.
- */
-template <class LogicalClass, LogicalType... logical_types>
-class SomeLogicalNode {
- public:
- /**
- * @brief Checks whether the object managed in \p logical is an instance
- * of the template argument LogicalClass by checking whether
- * it is one of types in the given template arguments logical_types.
- *
- * @param logical The logical node to be checked.
- * @return True for a match; otherwise false.
- */
- template <class OtherLogicalClass>
- static bool Matches(const std::shared_ptr<const OtherLogicalClass> &logical) {
- for (const LogicalType logical_type : kLogicalTypes) {
- if (logical->getLogicalType() == logical_type) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * @brief Checks whether the object managed in \p logical is an instance
- * of the template argument LogicalClass by checking whether
- * it is one of types in the given template arguments logical_types,
- * If true, it additionally casts \p logical to a std::shared_ptr
- * \p cast_logical of the template argument LogicalClass.
- *
- * @param logical The logical node to be checked.
- * @param cast_logical The cast logical node.
- * @return True if the object managed in \p logical is an instance of LogicalClass.
- */
- template <class OtherLogicalClass>
- static bool MatchesWithConditionalCast(const std::shared_ptr<const OtherLogicalClass> &logical,
- std::shared_ptr<const LogicalClass> *cast_logical) {
- bool is_match = Matches(logical);
- if (is_match) {
- *cast_logical = std::static_pointer_cast<const LogicalClass>(logical);
- }
- return is_match;
- }
-
- private:
- constexpr static LogicalType kLogicalTypes[] = {logical_types...};
-};
-
-template <class LogicalClass, LogicalType... logical_types>
-constexpr LogicalType SomeLogicalNode<LogicalClass, logical_types...>::kLogicalTypes[];
-
-// Specializations for all Logical classes.
-
-using SomeAggregate = SomeLogicalNode<Aggregate, LogicalType::kAggregate>;
-using SomeBinaryJoin = SomeLogicalNode<BinaryJoin,
- LogicalType::kHashJoin,
- LogicalType::kNestedLoopsJoin>;
-using SomeCopyFrom = SomeLogicalNode<CopyFrom, LogicalType::kCopyFrom>;
-using SomeCreateTable = SomeLogicalNode<CreateTable, LogicalType::kCreateTable>;
-using SomeDeleteTuples = SomeLogicalNode<DeleteTuples, LogicalType::kDeleteTuples>;
-using SomeDropTable = SomeLogicalNode<DropTable, LogicalType::kDropTable>;
-using SomeFilter = SomeLogicalNode<Filter, LogicalType::kFilter>;
-using SomeHashJoin = SomeLogicalNode<HashJoin, LogicalType::kHashJoin>;
-using SomeInsertTuple = SomeLogicalNode<InsertTuple, LogicalType::kInsertTuple>;
-using SomeJoin = SomeLogicalNode<Join,
- LogicalType::kHashJoin,
- LogicalType::kMultiwayCartesianJoin,
- LogicalType::kNestedLoopsJoin>;
-using SomeMultiwayCartesianJoin = SomeLogicalNode<MultiwayCartesianJoin, LogicalType::kMultiwayCartesianJoin>;
-using SomeNestedLoopsJoin = SomeLogicalNode<NestedLoopsJoin, LogicalType::kNestedLoopsJoin>;
-using SomeProject = SomeLogicalNode<Project, LogicalType::kProject>;
-using SomeSharedSubplanReference = SomeLogicalNode<SharedSubplanReference, LogicalType::kSharedSubplanReference>;
-using SomeSort = SomeLogicalNode<Sort, LogicalType::kSort>;
-using SomeTableReference = SomeLogicalNode<TableReference, LogicalType::kTableReference>;
-using SomeTopLevelPlan = SomeLogicalNode<TopLevelPlan, LogicalType::kTopLevelPlan>;
-using SomeUpdateTable = SomeLogicalNode<UpdateTable, LogicalType::kUpdateTable>;
-using SomeWindowAggregate = SomeLogicalNode<WindowAggregate, LogicalType::kWindowAggregate>;
-
-/** @} */
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
-
-#endif /* QUERY_PLANNER_LOGICAL_PATTERN_MATCHER_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/Project.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/Project.cpp b/query_optimizer/logical/Project.cpp
deleted file mode 100644
index 18c8fe9..0000000
--- a/query_optimizer/logical/Project.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 "query_optimizer/logical/Project.hpp"
-
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/ExpressionUtil.hpp"
-#include "query_optimizer/expressions/NamedExpression.hpp"
-#include "query_optimizer/expressions/PatternMatcher.hpp"
-#include "utility/Cast.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-namespace E = ::quickstep::optimizer::expressions;
-
-LogicalPtr Project::copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const {
- DCHECK_EQ(children().size(), new_children.size());
- return Project::Create(new_children[0], project_expressions_);
-}
-
-std::vector<E::AttributeReferencePtr> Project::getOutputAttributes() const {
- return ToRefVector(project_expressions_);
-}
-
-std::vector<E::AttributeReferencePtr> Project::getReferencedAttributes() const {
- std::vector<E::AttributeReferencePtr> referenced_attributes;
- for (const E::NamedExpressionPtr &project_expression : project_expressions_) {
- const std::vector<E::AttributeReferencePtr> referenced_attributes_in_expression =
- project_expression->getReferencedAttributes();
- referenced_attributes.insert(referenced_attributes.end(),
- referenced_attributes_in_expression.begin(),
- referenced_attributes_in_expression.end());
- }
- return referenced_attributes;
-}
-
-LogicalPtr Project::copyWithNewInputExpressions(
- const std::vector<E::ExpressionPtr> &input_expressions) const {
- DCHECK_EQ(project_expressions_.size(), input_expressions.size());
- std::vector<E::NamedExpressionPtr> new_project_expressions;
- for (const E::ExpressionPtr &input_expression : input_expressions) {
- E::NamedExpressionPtr project_expression;
- E::SomeNamedExpression::MatchesWithConditionalCast(input_expression, &project_expression);
- DCHECK(project_expression != nullptr);
- new_project_expressions.emplace_back(project_expression);
- }
- return Create(input_, new_project_expressions);
-}
-
-void Project::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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const {
- non_container_child_field_names->push_back("input");
- non_container_child_fields->push_back(input_);
-
- container_child_field_names->push_back("project_list");
- container_child_fields->push_back(
- CastSharedPtrVector<OptimizerTreeBase>(project_expressions_));
-}
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/Project.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/Project.hpp b/query_optimizer/logical/Project.hpp
deleted file mode 100644
index 83b352c..0000000
--- a/query_optimizer/logical/Project.hpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#ifndef QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_PROJECT_HPP_
-#define QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_PROJECT_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/expressions/Expression.hpp"
-#include "query_optimizer/expressions/NamedExpression.hpp"
-#include "query_optimizer/logical/Logical.hpp"
-#include "query_optimizer/logical/LogicalType.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-/** \addtogroup OptimizerLogical
- * @{
- */
-
-class Project;
-typedef std::shared_ptr<const Project> ProjectPtr;
-
-/**
- * @brief Project operator that computes the values of a list of expressions for
- * each input tuple and outputs them as a new relation.
- */
-class Project : public Logical {
- public:
- LogicalType getLogicalType() const override { return LogicalType::kProject; }
-
- std::string getName() const override { return "Project"; }
-
- /**
- * @return The expressions to be evaluated by the Project.
- */
- const std::vector<expressions::NamedExpressionPtr>& project_expressions() const {
- return project_expressions_;
- }
-
- /**
- * @return The input operator.
- */
- const LogicalPtr& input() const { return input_; }
-
- LogicalPtr copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const override;
-
- LogicalPtr copyWithNewInputExpressions(
- const std::vector<expressions::ExpressionPtr> &input_expressions) const override;
-
- std::vector<expressions::AttributeReferencePtr> getOutputAttributes() const override;
-
- std::vector<expressions::AttributeReferencePtr> getReferencedAttributes() const override;
-
- /**
- * @brief Creates a Project that computes \p project_expressions on the
- * relation produced by \p input.
- *
- * @param input The input operator to this Project.
- * @param project_expressions The project expressions.
- * @return An immutable Project.
- */
- static ProjectPtr Create(
- const LogicalPtr &input,
- const std::vector<expressions::NamedExpressionPtr> &project_expressions) {
- return ProjectPtr(new Project(input, project_expressions));
- }
-
- 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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const override;
-
- private:
- Project(
- const LogicalPtr &input,
- const std::vector<expressions::NamedExpressionPtr> &project_expressions)
- : input_(input), project_expressions_(project_expressions) {
- addChild(input);
- addInputExpressions(project_expressions_);
- }
-
- LogicalPtr input_;
- std::vector<expressions::NamedExpressionPtr> project_expressions_;
-
- DISALLOW_COPY_AND_ASSIGN(Project);
-};
-
-/** @} */
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
-
-#endif /* QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_PROJECT_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/Sample.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/Sample.cpp b/query_optimizer/logical/Sample.cpp
deleted file mode 100644
index 577292c..0000000
--- a/query_optimizer/logical/Sample.cpp
+++ /dev/null
@@ -1,63 +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 "query_optimizer/logical/Sample.hpp"
-
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/ExpressionUtil.hpp"
-#include "query_optimizer/expressions/NamedExpression.hpp"
-#include "utility/Cast.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-namespace E = ::quickstep::optimizer::expressions;
-
-LogicalPtr Sample::copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const {
- DCHECK_EQ(children().size(), new_children.size());
- return Sample::Create(new_children[0], is_block_sample_, percentage_);
-}
-
-void Sample::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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const {
- non_container_child_field_names->push_back("input");
- non_container_child_fields->push_back(input_);
-
- inline_field_names->push_back("percentage");
- inline_field_values->push_back(std::to_string(percentage_));
-
- inline_field_names->push_back("is_block_sample");
- inline_field_values->push_back(std::to_string(is_block_sample_));
-}
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/Sample.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/Sample.hpp b/query_optimizer/logical/Sample.hpp
deleted file mode 100644
index e2403c5..0000000
--- a/query_optimizer/logical/Sample.hpp
+++ /dev/null
@@ -1,135 +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_QUERY_OPTIMIZER_LOGICAL_SAMPLE_HPP_
-#define QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_SAMPLE_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/expressions/NamedExpression.hpp"
-#include "query_optimizer/logical/Logical.hpp"
-#include "query_optimizer/logical/LogicalType.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-/** \addtogroup OptimizerLogical
- * @{
- */
-
-class Sample;
-typedef std::shared_ptr<const Sample> SamplePtr;
-
-/**
- * @brief Sample operator that samples the data at a block level or
- * at the tuple level and outputs them as a new relation.
- */
-class Sample : public Logical {
- public:
- LogicalType getLogicalType() const override { return LogicalType::kSample; }
-
- std::string getName() const override { return "SAMPLE"; }
-
- LogicalPtr copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const override;
-
- std::vector<expressions::AttributeReferencePtr>
- getOutputAttributes() const override {
- return input_->getOutputAttributes();
- }
-
- std::vector<expressions::AttributeReferencePtr>
- getReferencedAttributes() const override {
- return input_->getReferencedAttributes();
- }
-
- /**
- * @return The percentage of data to be sampled.
- */
- int percentage() const {
- return percentage_;
- }
-
- /**
- * @return Flag indicating the sample type.
- */
- bool is_block_sample() const {
- return is_block_sample_;
- }
-
- /**
- * @return The input operator.
- */
- const LogicalPtr& input() const { return input_; }
-
- /**
- * @brief Creates a Sample operator that samples the data from the
- * relation produced by \p input.
- * @param input The input operator to this Sample.
- * @param is_block_sample Flag indicating if the sampling is either a block or
- * tuple level sampling
- * @param percentage The percentage of tuples/blocks to be sampled
- *
- * @return An immutable Sample.
- */
- static SamplePtr Create(const LogicalPtr &input, const bool is_block_sample,
- const int percentage) {
- return SamplePtr(new Sample(input, is_block_sample, percentage));
- }
-
- 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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>>
- *container_child_fields) const override;
-
- private:
- Sample(const LogicalPtr &input,
- const bool is_block_sample,
- const int percentage)
- : input_(input),
- is_block_sample_(is_block_sample),
- percentage_(percentage) {
- addChild(input);
- }
-
- LogicalPtr input_;
- const bool is_block_sample_;
- const int percentage_;
-
- DISALLOW_COPY_AND_ASSIGN(Sample);
-};
-
-/** @} */
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
-
-#endif // QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_SAMPLE_HPP_
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/SharedSubplanReference.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/SharedSubplanReference.cpp b/query_optimizer/logical/SharedSubplanReference.cpp
deleted file mode 100644
index 3a0fcb3..0000000
--- a/query_optimizer/logical/SharedSubplanReference.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#include "query_optimizer/logical/SharedSubplanReference.hpp"
-
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/logical/Logical.hpp"
-#include "utility/Cast.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-void SharedSubplanReference::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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const {
- inline_field_names->push_back("subplan_id");
- inline_field_values->push_back(std::to_string(subplan_id_));
-
- container_child_field_names->push_back("referenced_attributes");
- container_child_fields->push_back(CastSharedPtrVector<OptimizerTreeBase>(referenced_attributes_));
-
- container_child_field_names->push_back("output_attributes");
- container_child_fields->push_back(CastSharedPtrVector<OptimizerTreeBase>(output_attributes_));
-}
-
-LogicalPtr SharedSubplanReference::copyWithNewChildren(const std::vector<LogicalPtr> &new_children) const {
- DCHECK(new_children.empty());
- return Create(subplan_id_, referenced_attributes_, output_attributes_);
-}
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/SharedSubplanReference.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/SharedSubplanReference.hpp b/query_optimizer/logical/SharedSubplanReference.hpp
deleted file mode 100644
index 79ef4ad..0000000
--- a/query_optimizer/logical/SharedSubplanReference.hpp
+++ /dev/null
@@ -1,138 +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_QUERY_OPTIMIZER_LOGICAL_SHARED_SUBPLAN_REFERENCE_HPP_
-#define QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_SHARED_SUBPLAN_REFERENCE_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/logical/Logical.hpp"
-#include "query_optimizer/logical/LogicalType.hpp"
-#include "utility/Macros.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-/** \addtogroup OptimizerLogical
- * @{
- */
-
-class SharedSubplanReference;
-typedef std::shared_ptr<const SharedSubplanReference> SharedSubplanReferencePtr;
-
-/**
- * @brief A reference to a shared subplan stored in the TopLevelPlan node.
- */
-class SharedSubplanReference : public Logical {
- public:
- LogicalType getLogicalType() const override {
- return LogicalType::kSharedSubplanReference;
- }
-
- std::string getName() const override {
- return "SharedSubplanReference";
- }
-
- /**
- * @return The ID of the shared subplan.
- */
- int subplan_id() const {
- return subplan_id_;
- }
-
- /**
- * @return The attributes from the referenced shared subplan.
- */
- const std::vector<expressions::AttributeReferencePtr>& referenced_attributes() const {
- return referenced_attributes_;
- }
-
- /**
- * @return The output attributes of this shared subplan reference.
- */
- const std::vector<expressions::AttributeReferencePtr>& output_attributes() const {
- return output_attributes_;
- }
-
- std::vector<expressions::AttributeReferencePtr> getOutputAttributes() const override {
- return output_attributes_;
- }
-
- 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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const override;
-
- LogicalPtr copyWithNewChildren(const std::vector<LogicalPtr> &new_children) const override;
-
- std::vector<expressions::AttributeReferencePtr> getReferencedAttributes() const override {
- return referenced_attributes_;
- }
-
- /**
- * @brief Creates a SharedSubplanReference.
- *
- * @param subplan_id The ID of the shared subplan, which is the index of the referenced
- * shared subplan in <shared_subplans_> of the TopLevelPlan.
- * @param referenced_attributes The attributes from the referenced shared subplan.
- * @param output_attributes The output attributes of this shared subplan reference.
- * @return An immutable SharedSubplanReference.
- */
- static SharedSubplanReferencePtr Create(
- int subplan_id,
- const std::vector<expressions::AttributeReferencePtr> &referenced_attributes,
- const std::vector<expressions::AttributeReferencePtr> &output_attributes) {
- return SharedSubplanReferencePtr(
- new SharedSubplanReference(subplan_id, referenced_attributes, output_attributes));
- }
-
- private:
- SharedSubplanReference(int subplan_id,
- const std::vector<expressions::AttributeReferencePtr> &referenced_attributes,
- const std::vector<expressions::AttributeReferencePtr> &output_attributes)
- : subplan_id_(subplan_id),
- referenced_attributes_(referenced_attributes),
- output_attributes_(output_attributes) {
- DCHECK_EQ(output_attributes_.size(), referenced_attributes_.size());
- }
-
- int subplan_id_;
- std::vector<expressions::AttributeReferencePtr> referenced_attributes_;
- std::vector<expressions::AttributeReferencePtr> output_attributes_;
-
- DISALLOW_COPY_AND_ASSIGN(SharedSubplanReference);
-};
-
-/** @} */
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
-
-#endif /* QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_SHARED_SUBPLAN_REFERENCE_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/Sort.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/Sort.cpp b/query_optimizer/logical/Sort.cpp
deleted file mode 100644
index 3667f64..0000000
--- a/query_optimizer/logical/Sort.cpp
+++ /dev/null
@@ -1,87 +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 "query_optimizer/logical/Sort.hpp"
-
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/expressions/ExpressionUtil.hpp"
-#include "query_optimizer/expressions/NamedExpression.hpp"
-#include "query_optimizer/logical/Logical.hpp"
-#include "utility/Cast.hpp"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-namespace E = ::quickstep::optimizer::expressions;
-
-LogicalPtr Sort::copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const {
- DCHECK_EQ(getNumChildren(), new_children.size());
- return Create(new_children[0], sort_attributes_, sort_ascending_, nulls_first_flags_, limit_);
-}
-
-void Sort::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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const {
- non_container_child_field_names->push_back("input");
- non_container_child_fields->push_back(input_);
-
- inline_field_names->push_back("is_ascending");
- std::string ascending_list("[");
- for (bool is_ascending : sort_ascending_) {
- if (is_ascending) {
- ascending_list.append("true,");
- } else {
- ascending_list.append("false,");
- }
- }
- ascending_list.pop_back();
- ascending_list.append("]");
- inline_field_values->push_back(ascending_list);
-
- inline_field_names->push_back("nulls_first");
- std::string nulls_first_flags("[");
- for (bool nulls_first_flag : nulls_first_flags_) {
- if (nulls_first_flag) {
- nulls_first_flags.append("true,");
- } else {
- nulls_first_flags.append("false,");
- }
- }
- nulls_first_flags.pop_back();
- nulls_first_flags.append("]");
- inline_field_values->push_back(nulls_first_flags);
-
- container_child_field_names->push_back("sort_expressions");
- container_child_fields->push_back(
- CastSharedPtrVector<OptimizerTreeBase>(sort_attributes_));
-}
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/Sort.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/Sort.hpp b/query_optimizer/logical/Sort.hpp
deleted file mode 100644
index 894970b..0000000
--- a/query_optimizer/logical/Sort.hpp
+++ /dev/null
@@ -1,184 +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_QUERY_OPTIMIZER_LOGICAL_SORT_HPP_
-#define QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_SORT_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/logical/Logical.hpp"
-#include "query_optimizer/logical/LogicalType.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-/** \addtogroup OptimizerLogical
- * @{
- */
-
-class Sort;
-typedef std::shared_ptr<const Sort> SortPtr;
-
-/**
- * @brief Sort operator that sorts the input tuples by a subset of attributes.
- */
-class Sort : public Logical {
- public:
- LogicalType getLogicalType() const override { return LogicalType::kSort; }
-
- std::string getName() const override { return "Sort"; }
-
- /**
- * @return The input logical node.
- */
- const LogicalPtr& input() const { return input_; }
-
- /**
- * @return The sorting attributes.
- */
- const std::vector<expressions::AttributeReferencePtr>& sort_attributes() const {
- return sort_attributes_;
- }
-
- /**
- * @return The sorting directions.
- */
- const std::vector<bool>& sort_ascending() const { return sort_ascending_; }
-
- /**
- * @brief The order directions for null values.
- */
- const std::vector<bool>& nulls_first_flags() const {
- return nulls_first_flags_;
- }
-
- /**
- * @return The number of output sorted rows. -1 for a full table sort.
- */
- int limit() const {
- return limit_;
- }
-
- LogicalPtr copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const override;
-
- std::vector<expressions::AttributeReferencePtr> getOutputAttributes() const override {
- return input_->getOutputAttributes();
- }
-
- std::vector<expressions::AttributeReferencePtr> getReferencedAttributes() const override {
- return sort_attributes_;
- }
- /**
- * @brief Creates a Sort logical node.
- *
- * @param input The input to the Sort.
- * @param sort_attributes The sorting attributes.
- * @param sort_ascending The vector of ordering directions.
- * @param nulls_first_flags The vector of ordering directions for null values.
- * @param limit The number of output rows. -1 for a full table sort.
- *
- * @return An immutable Sort.
- */
- static SortPtr Create(
- const LogicalPtr &input,
- const std::vector<expressions::AttributeReferencePtr> &sort_attributes,
- const std::vector<bool> &sort_ascending,
- const std::vector<bool> &nulls_first_flags,
- const int limit) {
- return SortPtr(new Sort(input,
- sort_attributes,
- sort_ascending,
- nulls_first_flags,
- limit));
- }
-
- static SortPtr Create(
- const LogicalPtr &input,
- std::vector<expressions::AttributeReferencePtr> &&sort_attributes,
- std::vector<bool> &&sort_ascending,
- std::vector<bool> &&nulls_first_flags,
- const int limit) {
- return SortPtr(new Sort(input,
- std::move(sort_attributes),
- std::move(sort_ascending),
- std::move(nulls_first_flags),
- 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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *
- container_child_fields) const override;
-
- private:
- Sort(const LogicalPtr &input,
- const std::vector<expressions::AttributeReferencePtr> &sort_attributes,
- const std::vector<bool> &sort_ascending,
- const std::vector<bool> &nulls_first_flags,
- const int limit)
- : input_(input),
- sort_attributes_(sort_attributes),
- sort_ascending_(sort_ascending),
- nulls_first_flags_(nulls_first_flags),
- limit_(limit) {
- addChild(input_);
- }
-
- Sort(const LogicalPtr &input,
- std::vector<expressions::AttributeReferencePtr> &&sort_attributes,
- std::vector<bool> &&sort_ascending,
- std::vector<bool> &&nulls_first_flags,
- const int limit)
- : input_(input),
- sort_attributes_(std::move(sort_attributes)),
- sort_ascending_(std::move(sort_ascending)),
- nulls_first_flags_(std::move(nulls_first_flags)),
- limit_(limit) {
- addChild(input_);
- }
-
- LogicalPtr input_;
- std::vector<expressions::AttributeReferencePtr> sort_attributes_;
- // Has 1:1 matching with <sort_expressions_>.
- std::vector<bool> sort_ascending_;
- std::vector<bool> nulls_first_flags_;
- int limit_;
-
- DISALLOW_COPY_AND_ASSIGN(Sort);
-};
-
-/** @} */
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
-
-#endif /* QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_SORT_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/TableGenerator.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/TableGenerator.hpp b/query_optimizer/logical/TableGenerator.hpp
deleted file mode 100644
index 15ca985..0000000
--- a/query_optimizer/logical/TableGenerator.hpp
+++ /dev/null
@@ -1,183 +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_QUERY_OPTIMIZER_LOGICAL_TABLE_GENERATOR_HPP_
-#define QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_TABLE_GENERATOR_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "expressions/table_generator/GeneratorFunctionHandle.hpp"
-#include "query_optimizer/OptimizerContext.hpp"
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/expressions/ExprId.hpp"
-#include "query_optimizer/logical/Logical.hpp"
-#include "query_optimizer/logical/LogicalType.hpp"
-#include "utility/Cast.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-namespace E = ::quickstep::optimizer::expressions;
-
-using quickstep::GeneratorFunctionHandle;
-
-/** \addtogroup OptimizerLogical
- * @{
- */
-
-class TableGenerator;
-typedef std::shared_ptr<const TableGenerator> TableGeneratorPtr;
-
-/**
- * @brief Leaf logical node that represents a table that will be populated
- * by a generator function.
- *
- * @note For how to add a new generator function, see the documentation of
- * GeneratorFunction and GeneratorFunctionHandle.
- */
-class TableGenerator : public Logical {
- public:
- LogicalType getLogicalType() const override { return LogicalType::kTableGenerator; }
-
- std::string getName() const override { return "TableGenerator"; }
-
- LogicalPtr copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const override {
- return TableGeneratorPtr(
- new TableGenerator(generator_function_handle_,
- table_alias_,
- attribute_list_));
- }
-
- /**
- * @return The reference to the generator function handle.
- */
- const GeneratorFunctionHandlePtr& generator_function_handle() const {
- return generator_function_handle_;
- }
-
- /**
- * @return The alias name of this table.
- */
- const std::string& table_alias() const {
- return table_alias_;
- }
-
- /**
- * @return The reference to the output attributes of this table.
- */
- const std::vector<expressions::AttributeReferencePtr>& attribute_list() const {
- return attribute_list_;
- }
-
- std::vector<E::AttributeReferencePtr> getOutputAttributes() const override {
- return attribute_list_;
- }
-
- std::vector<E::AttributeReferencePtr> getReferencedAttributes() const override {
- return {};
- }
-
- 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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *
- container_child_fields) const override {
- inline_field_names->push_back("function_name");
- inline_field_values->push_back(generator_function_handle_->getName());
-
- if (table_alias_ != generator_function_handle_->getName()) {
- inline_field_names->push_back("table_alias");
- inline_field_values->push_back(table_alias_);
- }
-
- container_child_field_names->push_back("");
- container_child_fields->push_back(CastSharedPtrVector<OptimizerTreeBase>(attribute_list_));
- }
-
- /**
- * @brief Creates a logical TableGenerator node.
- *
- * @param generator_function_handle The shared_ptr reference to a generator
- function handle.
- * @param table_alias The alias name of this table.
- * @param optimizer_context The OptimizerContext for the query
- * @return An immutable TableGenerator.
- */
- static TableGeneratorPtr Create(
- const GeneratorFunctionHandlePtr &generator_function_handle,
- const std::string &table_alias,
- OptimizerContext *optimizer_context) {
- return TableGeneratorPtr(
- new TableGenerator(generator_function_handle,
- table_alias,
- optimizer_context));
- }
-
- private:
- TableGenerator(const GeneratorFunctionHandlePtr &generator_function_handle,
- const std::string &table_alias,
- OptimizerContext *optimizer_context)
- : generator_function_handle_(generator_function_handle),
- table_alias_(table_alias) {
- int num_attrs = generator_function_handle->getNumberOfOutputColumns();
- const std::string &table_name = generator_function_handle->getName();
-
- for (int i = 0; i < num_attrs; ++i) {
- attribute_list_.emplace_back(
- E::AttributeReference::Create(
- optimizer_context->nextExprId(),
- generator_function_handle->getOutputColumnName(i),
- table_alias,
- table_name,
- generator_function_handle->getOutputColumnType(i),
- E::AttributeReferenceScope::kLocal));
- }
- }
-
- TableGenerator(const GeneratorFunctionHandlePtr &generator_function_handle,
- const std::string &table_alias,
- const std::vector<E::AttributeReferencePtr> &attribute_list)
- : generator_function_handle_(generator_function_handle),
- table_alias_(table_alias),
- attribute_list_(attribute_list) {
- }
-
- GeneratorFunctionHandlePtr generator_function_handle_;
- std::string table_alias_;
- std::vector<E::AttributeReferencePtr> attribute_list_;
-
- DISALLOW_COPY_AND_ASSIGN(TableGenerator);
-};
-
-/** @} */
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
-
-#endif /* QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_TABLE_GENERATOR_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/TableReference.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/TableReference.cpp b/query_optimizer/logical/TableReference.cpp
deleted file mode 100644
index 6d94665..0000000
--- a/query_optimizer/logical/TableReference.cpp
+++ /dev/null
@@ -1,86 +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 "query_optimizer/logical/TableReference.hpp"
-
-#include <string>
-#include <vector>
-
-#include "catalog/CatalogRelation.hpp"
-#include "query_optimizer/OptimizerContext.hpp"
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "utility/Cast.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-namespace E = ::quickstep::optimizer::expressions;
-
-TableReference::TableReference(const CatalogRelation *catalog_relation,
- const std::string &relation_alias,
- OptimizerContext *optimizer_context)
- : catalog_relation_(catalog_relation),
- relation_alias_(relation_alias) {
- for (CatalogRelation::const_iterator attribute_it = catalog_relation_->begin();
- attribute_it < catalog_relation_->end();
- ++attribute_it) {
- attribute_list_.emplace_back(
- E::AttributeReference::Create(
- optimizer_context->nextExprId(),
- attribute_it->getName(),
- attribute_it->getDisplayName(),
- relation_alias,
- attribute_it->getType(),
- E::AttributeReferenceScope::kLocal));
- }
-}
-
-LogicalPtr TableReference::copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const {
- DCHECK_EQ(new_children.size(), children().size());
- return TableReferencePtr(
- new TableReference(catalog_relation_, relation_alias_, attribute_list_));
-}
-
-void TableReference::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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const {
- inline_field_names->push_back("relation_name");
- inline_field_values->push_back(catalog_relation_->getName());
-
- if (relation_alias_ != catalog_relation_->getName()) {
- inline_field_names->push_back("relation_alias");
- inline_field_values->push_back(relation_alias_);
- }
-
- container_child_field_names->push_back("");
- container_child_fields->push_back(CastSharedPtrVector<OptimizerTreeBase>(attribute_list_));
-}
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/TableReference.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/TableReference.hpp b/query_optimizer/logical/TableReference.hpp
deleted file mode 100644
index 6788c82..0000000
--- a/query_optimizer/logical/TableReference.hpp
+++ /dev/null
@@ -1,143 +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_QUERY_OPTIMIZER_EXPRESSIONS_LOGICAL_TABLE_REFERENCE_HPP_
-#define QUICKSTEP_QUERY_OPTIMIZER_EXPRESSIONS_LOGICAL_TABLE_REFERENCE_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/logical/Logical.hpp"
-#include "query_optimizer/logical/LogicalType.hpp"
-#include "utility/Macros.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-
-class CatalogRelation;
-
-namespace optimizer {
-
-class OptimizerContext;
-
-namespace logical {
-
-/** \addtogroup OptimizerLogical
- * @{
- */
-
-class TableReference;
-typedef std::shared_ptr<const TableReference> TableReferencePtr;
-
-/**
- * @brief Leaf logical operator that represents a reference to
- * a catalog relation.
- */
-class TableReference : public Logical {
- public:
- LogicalType getLogicalType() const override { return LogicalType::kTableReference; }
-
- std::string getName() const override { return "TableReference"; }
-
- /**
- * @return The catalog relation which the operator scans.
- */
- const CatalogRelation* catalog_relation() const { return catalog_relation_; }
-
- /**
- * @return The relation alias.
- */
- const std::string& relation_alias() const { return relation_alias_; }
-
- /**
- * @return The references to the attributes in the relation.
- */
- const std::vector<expressions::AttributeReferencePtr>& attribute_list() const {
- return attribute_list_;
- }
-
- LogicalPtr copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const override;
-
- std::vector<expressions::AttributeReferencePtr> getOutputAttributes() const override {
- return attribute_list_;
- }
-
- std::vector<expressions::AttributeReferencePtr> getReferencedAttributes() const override {
- return getOutputAttributes();
- }
-
- /**
- * @brief Generates a AttributeRerference for each CatalogAttribute in the \p
- * catalog_relation and creates a TableReference on it.
- *
- * @param catalog_relation The catalog relation to be scanned.
- * @param relation_alias The relation alias. This is stored here for the printing purpose only.
- * @param optimizer_context The OptimizerContext for the query.
- * @return An immutable TableReference.
- */
- static TableReferencePtr Create(const CatalogRelation *catalog_relation,
- const std::string &relation_alias,
- OptimizerContext *optimizer_context) {
- DCHECK(!relation_alias.empty());
- return TableReferencePtr(
- new TableReference(catalog_relation, relation_alias, optimizer_context));
- }
-
- 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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const override;
-
- private:
- TableReference(const CatalogRelation *catalog_relation,
- const std::string &relation_alias,
- OptimizerContext *optimizer_context);
-
- // Constructor where the attribute list is explicitly given.
- TableReference(
- const CatalogRelation *catalog_relation,
- const std::string &relation_alias,
- const std::vector<expressions::AttributeReferencePtr> &attribute_list)
- : catalog_relation_(catalog_relation),
- relation_alias_(relation_alias),
- attribute_list_(attribute_list) {}
-
- const CatalogRelation *catalog_relation_;
- std::string relation_alias_;
- std::vector<expressions::AttributeReferencePtr> attribute_list_;
-
- DISALLOW_COPY_AND_ASSIGN(TableReference);
-};
-
-/** @} */
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
-
-#endif /* QUICKSTEP_QUERY_OPTIMIZER_EXPRESSIONS_LOGICAL_TABLE_REFERENCE_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/TopLevelPlan.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/TopLevelPlan.cpp b/query_optimizer/logical/TopLevelPlan.cpp
deleted file mode 100644
index 3a6eb44..0000000
--- a/query_optimizer/logical/TopLevelPlan.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- **/
-
-#include "query_optimizer/logical/TopLevelPlan.hpp"
-
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "utility/Cast.hpp"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-namespace E = ::quickstep::optimizer::expressions;
-
-void TopLevelPlan::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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const {
- non_container_child_field_names->push_back("plan");
- non_container_child_fields->push_back(plan_);
-
- if (!shared_subplans_.empty()) {
- container_child_field_names->push_back("shared_subplans");
- container_child_fields->push_back(
- CastSharedPtrVector<OptimizerTreeBase>(shared_subplans_));
- }
-
- container_child_field_names->push_back("output_attributes");
- container_child_fields->push_back(
- CastSharedPtrVector<OptimizerTreeBase>(plan_->getOutputAttributes()));
-}
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/TopLevelPlan.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/TopLevelPlan.hpp b/query_optimizer/logical/TopLevelPlan.hpp
deleted file mode 100644
index 0b8f1a4..0000000
--- a/query_optimizer/logical/TopLevelPlan.hpp
+++ /dev/null
@@ -1,155 +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_QUERY_OPTIMIZER_LOGICAL_TOP_LEVEL_PLAN_HPP_
-#define QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_TOP_LEVEL_PLAN_HPP_
-
-#include <memory>
-#include <string>
-#include <unordered_map>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/expressions/ExprId.hpp"
-#include "query_optimizer/logical/Logical.hpp"
-#include "query_optimizer/logical/LogicalType.hpp"
-#include "utility/Macros.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-/** \addtogroup OptimizerLogical
- * @{
- */
-
-class TopLevelPlan;
-typedef std::shared_ptr<const TopLevelPlan> TopLevelPlanPtr;
-
-/**
- * @brief The root of a logical plan tree that contains the entire logical plan
- * and shared subplans.
- */
-class TopLevelPlan : public Logical {
- public:
- /**
- * @brief Destructor.
- */
- ~TopLevelPlan() override {}
-
- LogicalType getLogicalType() const override { return LogicalType::kTopLevelPlan; }
-
- std::string getName() const override { return "TopLevelPlan"; }
-
- /**
- * @return The input plan.
- */
- const LogicalPtr& plan() const { return plan_; }
-
- /**
- * @return The vector of the shared subplans.
- */
- const std::vector<LogicalPtr>& shared_subplans() const { return shared_subplans_; }
-
- LogicalPtr copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const override {
- DCHECK_EQ(getNumChildren(), new_children.size());
- // The first is the main plan, and the remaining
- // children are shared subplans referenced in the main plan.
- std::vector<LogicalPtr> new_shared_subplans;
- if (new_children.size() > 1u) {
- new_shared_subplans.insert(new_shared_subplans.end(),
- ++new_children.begin(),
- new_children.end());
- }
- return Create(new_children[0], new_shared_subplans, uncorrelated_subquery_map_);
- }
-
- /**
- * @return Map from the expression ID of an attribute reference to the
- * uncorrelated subquery that produces the attribute.
- */
- const std::unordered_map<expressions::ExprId, int>& uncorrelated_subquery_map() const {
- return uncorrelated_subquery_map_;
- }
-
- std::vector<expressions::AttributeReferencePtr> getOutputAttributes() const override {
- return plan()->getOutputAttributes();
- }
-
- std::vector<expressions::AttributeReferencePtr> getReferencedAttributes() const override {
- return {};
- }
-
- /**
- * @brief Creates a TopLevelPlan.
- *
- * @param plan The input plan.
- * @param shared_subplans The subplans referenced in the main input plan.
- * @param uncorrelated_subquery_map Map from expression IDs to uncorrelated scalar subqueries.
- * @return An immutable TopLevelPlan.
- */
- static TopLevelPlanPtr Create(const LogicalPtr &plan,
- const std::vector<LogicalPtr> &shared_subplans = std::vector<LogicalPtr>(),
- const std::unordered_map<expressions::ExprId, int> &uncorrelated_subquery_map =
- std::unordered_map<expressions::ExprId, int>()) {
- return TopLevelPlanPtr(new TopLevelPlan(plan, shared_subplans, uncorrelated_subquery_map));
- }
-
- 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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const override;
-
- private:
- TopLevelPlan(const LogicalPtr &plan,
- const std::vector<LogicalPtr> &shared_subplans,
- const std::unordered_map<expressions::ExprId, int> &uncorrelated_subquery_map)
- : plan_(plan),
- shared_subplans_(shared_subplans),
- uncorrelated_subquery_map_(uncorrelated_subquery_map) {
- addChild(plan);
- for (const LogicalPtr &shared_subplan : shared_subplans) {
- addChild(shared_subplan);
- }
- }
-
- LogicalPtr plan_;
- // Stored in the topological ordering based on dependencies.
- std::vector<LogicalPtr> shared_subplans_;
-
- std::unordered_map<expressions::ExprId, int> uncorrelated_subquery_map_;
-
- DISALLOW_COPY_AND_ASSIGN(TopLevelPlan);
-};
-
-/** @} */
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
-
-#endif /* QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_TOP_LEVEL_PLAN_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/UpdateTable.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/UpdateTable.cpp b/query_optimizer/logical/UpdateTable.cpp
deleted file mode 100644
index 8f02f5d..0000000
--- a/query_optimizer/logical/UpdateTable.cpp
+++ /dev/null
@@ -1,86 +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 "query_optimizer/logical/UpdateTable.hpp"
-
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/expressions/Predicate.hpp"
-#include "query_optimizer/expressions/Scalar.hpp"
-#include "utility/Cast.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-LogicalPtr UpdateTable::copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const {
- DCHECK_EQ(getNumChildren(), new_children.size());
- return Create(new_children[0], assignees_, assignment_expressions_,
- predicate_);
-}
-
-std::vector<expressions::AttributeReferencePtr> UpdateTable::getReferencedAttributes() const {
- std::vector<expressions::AttributeReferencePtr> referenced_attributes = assignees_;
- for (const expressions::ScalarPtr& assignment_expression : assignment_expressions_) {
- std::vector<expressions::AttributeReferencePtr> attrs_referenced_in_expression =
- assignment_expression->getReferencedAttributes();
- referenced_attributes.insert(referenced_attributes.end(),
- attrs_referenced_in_expression.begin(),
- attrs_referenced_in_expression.end());
- }
- if (predicate_ != nullptr) {
- std::vector<expressions::AttributeReferencePtr> attrs_referenced_in_predicate =
- predicate_->getReferencedAttributes();
- referenced_attributes.insert(referenced_attributes.end(),
- attrs_referenced_in_predicate.begin(),
- attrs_referenced_in_predicate.end());
- }
- return referenced_attributes;
-}
-
-void UpdateTable::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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const {
- non_container_child_field_names->push_back("input");
- non_container_child_fields->push_back(input_);
- if (predicate_ != nullptr) {
- non_container_child_field_names->push_back("predicate");
- non_container_child_fields->push_back(predicate_);
- }
-
- container_child_field_names->push_back("attributes");
- container_child_fields->push_back(CastSharedPtrVector<OptimizerTreeBase>(assignees_));
- container_child_field_names->push_back("assigned_values");
- container_child_fields->push_back(
- CastSharedPtrVector<OptimizerTreeBase>(assignment_expressions_));
-}
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/UpdateTable.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/UpdateTable.hpp b/query_optimizer/logical/UpdateTable.hpp
deleted file mode 100644
index ec0d50f..0000000
--- a/query_optimizer/logical/UpdateTable.hpp
+++ /dev/null
@@ -1,145 +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_QUERY_OPTIMIZER_LOGICAL_UPDATETABLE_HPP_
-#define QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_UPDATETABLE_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/expressions/Predicate.hpp"
-#include "query_optimizer/expressions/Scalar.hpp"
-#include "query_optimizer/logical/Logical.hpp"
-#include "query_optimizer/logical/LogicalType.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-/** \addtogroup OptimizerLogical
- * @{
- */
-
-class UpdateTable;
-typedef std::shared_ptr<const UpdateTable> UpdateTablePtr;
-
-/**
- * @brief Updates a relation with new assignments to some tuples.
- */
-class UpdateTable : public Logical {
- public:
- LogicalType getLogicalType() const override { return LogicalType::kUpdateTable; }
-
- std::string getName() const override { return "UpdateTable"; }
-
- /**
- * @return The logical node that creates the table to be updated.
- */
- const LogicalPtr& input() const { return input_; }
-
- /**
- * @return The attributes to be assigned values to.
- */
- const std::vector<expressions::AttributeReferencePtr>& assignees() const {
- return assignees_;
- }
-
- /**
- * @return The expressions for which the values are assigned.
- */
- const std::vector<expressions::ScalarPtr>& assignment_expressions() const {
- return assignment_expressions_;
- }
-
- /**
- * @return The predicate to select tuples to be updated.
- */
- const expressions::PredicatePtr& predicate() const { return predicate_; }
-
- LogicalPtr copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const override;
-
- std::vector<expressions::AttributeReferencePtr> getOutputAttributes() const override {
- return std::vector<expressions::AttributeReferencePtr>();
- }
-
- std::vector<expressions::AttributeReferencePtr> getReferencedAttributes() const override;
-
- /**
- * @brief Creates an UpdateTable logical node that represents an operation to
- * update a table with given assignments.
- *
- * @param input The input gives the table to be updated.
- * @param assignees The attribute list to assign values to.
- * @param assignment_expressions The expressions that gives the values to be
- * assigned.
- * @param predicate The predicate to select tuples to be updated.
- * @return An immutable UpdateTable node.
- */
- static UpdateTablePtr Create(
- const LogicalPtr &input,
- const std::vector<expressions::AttributeReferencePtr> &assignees,
- const std::vector<expressions::ScalarPtr> &assignment_expressions,
- const expressions::PredicatePtr &predicate) {
- return UpdateTablePtr(
- new UpdateTable(input, assignees, assignment_expressions, predicate));
- }
-
- 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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const override;
-
- private:
- UpdateTable(const LogicalPtr &input,
- const std::vector<expressions::AttributeReferencePtr> &assignees,
- const std::vector<expressions::ScalarPtr> &assignment_expressions,
- const expressions::PredicatePtr &predicate)
- : input_(input),
- assignees_(assignees),
- assignment_expressions_(assignment_expressions),
- predicate_(predicate) {
- addChild(input);
- }
-
- LogicalPtr input_;
- // The attributes to be assigned values to.
- std::vector<expressions::AttributeReferencePtr> assignees_;
- // The expressions for which the values are assigned. Has 1:1 matching with
- // <assignees_>.
- std::vector<expressions::ScalarPtr> assignment_expressions_;
- expressions::PredicatePtr predicate_;
-
- DISALLOW_COPY_AND_ASSIGN(UpdateTable);
-};
-
-/** @} */
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
-
-#endif /* QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_UPDATETABLE_HPP_ */
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/WindowAggregate.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/WindowAggregate.cpp b/query_optimizer/logical/WindowAggregate.cpp
deleted file mode 100644
index cc09d97..0000000
--- a/query_optimizer/logical/WindowAggregate.cpp
+++ /dev/null
@@ -1,85 +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 "query_optimizer/logical/WindowAggregate.hpp"
-
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/Alias.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/expressions/ExpressionUtil.hpp"
-#include "query_optimizer/expressions/NamedExpression.hpp"
-#include "query_optimizer/expressions/PatternMatcher.hpp"
-#include "utility/Cast.hpp"
-
-#include "glog/logging.h"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-namespace E = ::quickstep::optimizer::expressions;
-
-LogicalPtr WindowAggregate::copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const {
- DCHECK_EQ(getNumChildren(), new_children.size());
- return Create(new_children[0], window_aggregate_expression_);
-}
-
-std::vector<E::AttributeReferencePtr> WindowAggregate::getOutputAttributes() const {
- std::vector<E::AttributeReferencePtr> output_attributes(input_->getOutputAttributes());
- output_attributes.push_back(E::ToRef(window_aggregate_expression_));
- return output_attributes;
-}
-
-std::vector<E::AttributeReferencePtr> WindowAggregate::getReferencedAttributes() const {
- return window_aggregate_expression_->getReferencedAttributes();
-}
-
-LogicalPtr WindowAggregate::copyWithNewInputExpressions(
- const std::vector<E::ExpressionPtr> &input_expressions) const {
- // Only one expression needed
- DCHECK_EQ(1u, input_expressions.size());
-
- E::AliasPtr window_aggregate_expression;
- E::SomeAlias::MatchesWithConditionalCast(input_expressions[0],
- &window_aggregate_expression);
-
- return Create(input_, window_aggregate_expression);
-}
-
-void WindowAggregate::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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const {
- non_container_child_field_names->push_back("input");
- non_container_child_fields->push_back(input_);
-
- non_container_child_field_names->push_back("window_aggregate_expression");
- non_container_child_fields->push_back(window_aggregate_expression_);
-}
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/logical/WindowAggregate.hpp
----------------------------------------------------------------------
diff --git a/query_optimizer/logical/WindowAggregate.hpp b/query_optimizer/logical/WindowAggregate.hpp
deleted file mode 100644
index b156938..0000000
--- a/query_optimizer/logical/WindowAggregate.hpp
+++ /dev/null
@@ -1,123 +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_QUERY_OPTIMIZER_LOGICAL_WINDOW_AGGREGATE_HPP_
-#define QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_WINDOW_AGGREGATE_HPP_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/Alias.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/expressions/Expression.hpp"
-#include "query_optimizer/expressions/NamedExpression.hpp"
-#include "query_optimizer/logical/Logical.hpp"
-#include "query_optimizer/logical/LogicalType.hpp"
-#include "utility/Macros.hpp"
-
-namespace quickstep {
-namespace optimizer {
-namespace logical {
-
-/** \addtogroup OptimizerLogical
- * @{
- */
-
-class WindowAggregate;
-typedef std::shared_ptr<const WindowAggregate> WindowAggregatePtr;
-
-/**
- * @brief Window aggregate operator that computes window aggregate expressions.
- */
-class WindowAggregate : public Logical {
- public:
- LogicalType getLogicalType() const override {
- return LogicalType::kWindowAggregate;
- }
-
- std::string getName() const override { return "WindowAggregate"; }
-
- /**
- * @return The input logical node.
- */
- const LogicalPtr& input() const { return input_; }
-
- /**
- * @return PARTITION BY expressions.
- */
- const expressions::AliasPtr window_aggregate_expression() const {
- return window_aggregate_expression_;
- }
-
- LogicalPtr copyWithNewChildren(
- const std::vector<LogicalPtr> &new_children) const override;
-
- LogicalPtr copyWithNewInputExpressions(
- const std::vector<expressions::ExpressionPtr> &input_expressions) const override;
-
- std::vector<expressions::AttributeReferencePtr> getOutputAttributes() const override;
-
- std::vector<expressions::AttributeReferencePtr> getReferencedAttributes() const override;
-
- /**
- * @brief Creates an Aggregate logical node.
- *
- * @param input The input node.
- * @param window_aggregate_expression The window aggregate expression.
- * @return An immutable WindowAggregate node.
- */
- static WindowAggregatePtr Create(
- const LogicalPtr &input,
- const expressions::AliasPtr &window_aggregate_expression) {
- return WindowAggregatePtr(new WindowAggregate(input, window_aggregate_expression));
- }
-
- 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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const override;
-
- private:
- WindowAggregate(const LogicalPtr &input,
- const expressions::AliasPtr &window_aggregate_expression)
- : input_(input),
- window_aggregate_expression_(window_aggregate_expression) {
- addChild(input_);
- addInputExpression(window_aggregate_expression_);
- }
-
- const LogicalPtr input_;
- const expressions::AliasPtr window_aggregate_expression_;
-
- DISALLOW_COPY_AND_ASSIGN(WindowAggregate);
-};
-
-/** @} */
-
-} // namespace logical
-} // namespace optimizer
-} // namespace quickstep
-
-#endif // QUICKSTEP_QUERY_OPTIMIZER_LOGICAL_WINDOW_AGGREGATE_HPP_
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/156290a4/query_optimizer/physical/Aggregate.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/physical/Aggregate.cpp b/query_optimizer/physical/Aggregate.cpp
deleted file mode 100644
index 35476af..0000000
--- a/query_optimizer/physical/Aggregate.cpp
+++ /dev/null
@@ -1,115 +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 "query_optimizer/physical/Aggregate.hpp"
-
-#include <string>
-#include <vector>
-
-#include "query_optimizer/OptimizerTree.hpp"
-#include "query_optimizer/expressions/AttributeReference.hpp"
-#include "query_optimizer/expressions/ExpressionUtil.hpp"
-#include "query_optimizer/expressions/NamedExpression.hpp"
-#include "query_optimizer/expressions/Predicate.hpp"
-#include "utility/Cast.hpp"
-
-namespace quickstep {
-namespace optimizer {
-namespace physical {
-
-namespace E = ::quickstep::optimizer::expressions;
-
-std::vector<E::AttributeReferencePtr> Aggregate::getOutputAttributes() const {
- std::vector<E::AttributeReferencePtr> output_attributes(
- E::ToRefVector(grouping_expressions_));
- const std::vector<E::AttributeReferencePtr> aggregate_output_attributes =
- E::ToRefVector(aggregate_expressions_);
- output_attributes.insert(output_attributes.end(),
- aggregate_output_attributes.begin(),
- aggregate_output_attributes.end());
- return output_attributes;
-}
-
-std::vector<E::AttributeReferencePtr> Aggregate::getReferencedAttributes()
- const {
- std::vector<E::AttributeReferencePtr> referenced_attributes;
- for (const E::NamedExpressionPtr &grouping_expression :
- grouping_expressions_) {
- const std::vector<E::AttributeReferencePtr> referenced_attributes_in_expression =
- grouping_expression->getReferencedAttributes();
- referenced_attributes.insert(referenced_attributes.end(),
- referenced_attributes_in_expression.begin(),
- referenced_attributes_in_expression.end());
- }
- for (const E::AliasPtr &aggregate_expression :
- aggregate_expressions_) {
- const std::vector<E::AttributeReferencePtr> referenced_attributes_in_expression =
- aggregate_expression->getReferencedAttributes();
- referenced_attributes.insert(referenced_attributes.end(),
- referenced_attributes_in_expression.begin(),
- referenced_attributes_in_expression.end());
- }
- if (filter_predicate_ != nullptr) {
- const std::vector<E::AttributeReferencePtr> referenced_attributes_in_predicate =
- filter_predicate_->getReferencedAttributes();
- referenced_attributes.insert(referenced_attributes.end(),
- referenced_attributes_in_predicate.begin(),
- referenced_attributes_in_predicate.end());
- }
-
- // TODO(jianqiao): This is a quick fix to the COUNT(*) problem that we retain
- // at least one column from the child plan to survive the PruneColumns physical
- // optimization. The comprehensive approach should also try to optimize the
- // child plan with regard to the knowledge that the aggregation actually don't
- // care about the values of the child plan's output but needs only the number
- // of rows of the output.
- if (referenced_attributes.size() == 0) {
- DCHECK_GT(input_->getOutputAttributes().size(), static_cast<std::size_t>(0));
- referenced_attributes.emplace_back(input_->getOutputAttributes()[0]);
- }
-
- return referenced_attributes;
-}
-
-void Aggregate::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<OptimizerTreeBaseNodePtr> *non_container_child_fields,
- std::vector<std::string> *container_child_field_names,
- std::vector<std::vector<OptimizerTreeBaseNodePtr>> *container_child_fields) const {
- non_container_child_field_names->push_back("input");
- non_container_child_fields->push_back(input_);
-
- container_child_field_names->push_back("grouping_expressions");
- container_child_fields->push_back(
- CastSharedPtrVector<OptimizerTreeBase>(grouping_expressions_));
- container_child_field_names->push_back("aggregate_expressions");
- container_child_fields->push_back(
- CastSharedPtrVector<OptimizerTreeBase>(aggregate_expressions_));
-
- if (filter_predicate_ != nullptr) {
- non_container_child_field_names->push_back("filter_predicate");
- non_container_child_fields->push_back(filter_predicate_);
- }
-}
-
-} // namespace physical
-} // namespace optimizer
-} // namespace quickstep