Repository: incubator-quickstep
Updated Branches:
  refs/heads/common-subexpression 675dcf8de -> a3a4ec7bf


Updates


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

Branch: refs/heads/common-subexpression
Commit: a3a4ec7bf2f99634c9e50c6b5f1a43b9e455f133
Parents: 675dcf8
Author: Jianqiao Zhu <jianq...@cs.wisc.edu>
Authored: Wed Apr 19 22:37:29 2017 -0500
Committer: Jianqiao Zhu <jianq...@cs.wisc.edu>
Committed: Wed Apr 19 22:37:29 2017 -0500

----------------------------------------------------------------------
 query_optimizer/ExecutionGenerator.cpp              |  6 +++---
 query_optimizer/PhysicalGenerator.cpp               |  2 ++
 query_optimizer/rules/ReuseAggregateExpressions.cpp | 11 ++++++++++-
 3 files changed, 15 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a3a4ec7b/query_optimizer/ExecutionGenerator.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/ExecutionGenerator.cpp 
b/query_optimizer/ExecutionGenerator.cpp
index 8f44cc1..e01e34d 100644
--- a/query_optimizer/ExecutionGenerator.cpp
+++ b/query_optimizer/ExecutionGenerator.cpp
@@ -1580,7 +1580,7 @@ void ExecutionGenerator::convertAggregate(
             ->canUseCollisionFreeAggregation(physical_plan,
                                              estimated_num_groups,
                                              &max_num_groups)) {
-      std::cout << "Use collision free\n";
+//      std::cout << "Use collision free\n";
       aggr_state_proto->set_hash_table_impl_type(
           serialization::HashTableImplType::COLLISION_FREE_VECTOR);
       aggr_state_proto->set_estimated_num_entries(max_num_groups);
@@ -1588,12 +1588,12 @@ void ExecutionGenerator::convertAggregate(
     } else {
       if (cost_model_for_aggregation_->canUseTwoPhaseNumericAggregation(
               physical_plan, estimated_num_groups)) {
-        std::cout << "Use two phase numeric\n";
+//        std::cout << "Use two phase numeric\n";
         aggr_state_proto->set_hash_table_impl_type(
             serialization::HashTableImplType::THREAD_PRIVATE_COMPACT_KEY);
       } else {
         // Otherwise, use SeparateChaining.
-        std::cout << "Use normal\n";
+//        std::cout << "Use normal\n";
         aggr_state_proto->set_hash_table_impl_type(
             serialization::HashTableImplType::SEPARATE_CHAINING);
       }

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a3a4ec7b/query_optimizer/PhysicalGenerator.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/PhysicalGenerator.cpp 
b/query_optimizer/PhysicalGenerator.cpp
index 07bd024..4405761 100644
--- a/query_optimizer/PhysicalGenerator.cpp
+++ b/query_optimizer/PhysicalGenerator.cpp
@@ -155,6 +155,8 @@ P::PhysicalPtr PhysicalGenerator::optimizePlan() {
 
   rules.emplace_back(new CollapseSelection());
 
+  rules.emplace_back(new PruneColumns());
+
   rules.emplace_back(new ExtractCommonSubexpression(optimizer_context_));
 
   // NOTE(jianqiao): Adding rules after InjectJoinFilters (or 
AttachLIPFilters) requires

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/a3a4ec7b/query_optimizer/rules/ReuseAggregateExpressions.cpp
----------------------------------------------------------------------
diff --git a/query_optimizer/rules/ReuseAggregateExpressions.cpp 
b/query_optimizer/rules/ReuseAggregateExpressions.cpp
index 3036833..7151fdf 100644
--- a/query_optimizer/rules/ReuseAggregateExpressions.cpp
+++ b/query_optimizer/rules/ReuseAggregateExpressions.cpp
@@ -47,6 +47,7 @@
 #include "types/operations/binary_operations/BinaryOperationFactory.hpp"
 #include "types/operations/binary_operations/BinaryOperationID.hpp"
 #include "utility/EqualsAnyConstant.hpp"
+#include "utility/HashError.hpp"
 
 #include "glog/logging.h"
 
@@ -106,7 +107,11 @@ P::PhysicalPtr ReuseAggregateExpressions::applyToNode(
       }
     }
     if (arguments.size() == 1) {
-      agg_expr_info[arguments.front()][agg_id].emplace_back(i);
+      try {
+        agg_expr_info[arguments.front()][agg_id].emplace_back(i);
+      } catch (const HashNotSupported &e) {
+        continue;
+      }
     }
   }
 
@@ -190,6 +195,10 @@ P::PhysicalPtr ReuseAggregateExpressions::applyToNode(
   std::vector<E::AliasPtr> new_agg_exprs;
   std::vector<E::NamedExpressionPtr> new_select_exprs;
 
+  for (const auto &grouping_expr : aggregate->grouping_expressions()) {
+    new_select_exprs.emplace_back(E::ToRef(grouping_expr));
+  }
+
   for (std::size_t i = 0; i < agg_refs.size(); ++i) {
     const auto &agg_ref = agg_refs[i];
     const E::AliasPtr &agg_expr = agg_exprs[i];

Reply via email to