Repository: incubator-quickstep
Updated Branches:
  refs/heads/lip-refactor-backend 3fbbdd2d1 -> 0ffb81840


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/0ffb8184
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/0ffb8184
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/0ffb8184

Branch: refs/heads/lip-refactor-backend
Commit: 0ffb818406b4c3c03ea12aff3a289c5950ecbea1
Parents: 3fbbdd2
Author: Jianqiao Zhu <jianq...@cs.wisc.edu>
Authored: Fri Oct 21 16:33:59 2016 -0500
Committer: Jianqiao Zhu <jianq...@cs.wisc.edu>
Committed: Fri Oct 21 16:33:59 2016 -0500

----------------------------------------------------------------------
 relational_operators/AggregationOperator.cpp | 21 ++----
 relational_operators/AggregationOperator.hpp |  3 +-
 relational_operators/BuildHashOperator.cpp   | 12 +---
 relational_operators/BuildHashOperator.hpp   |  6 +-
 relational_operators/CMakeLists.txt          |  8 +--
 relational_operators/HashJoinOperator.cpp    | 17 +----
 relational_operators/SelectOperator.cpp      | 78 +++++++++--------------
 relational_operators/SelectOperator.hpp      | 10 +--
 utility/lip_filter/CMakeLists.txt            |  4 ++
 utility/lip_filter/LIPFilterBuilder.hpp      |  3 -
 utility/lip_filter/LIPFilterUtil.hpp         | 63 ++++++++++++++++++
 11 files changed, 122 insertions(+), 103 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0ffb8184/relational_operators/AggregationOperator.cpp
----------------------------------------------------------------------
diff --git a/relational_operators/AggregationOperator.cpp 
b/relational_operators/AggregationOperator.cpp
index e2cb3a8..963012c 100644
--- a/relational_operators/AggregationOperator.cpp
+++ b/relational_operators/AggregationOperator.cpp
@@ -28,7 +28,7 @@
 #include "storage/AggregationOperationState.hpp"
 #include "storage/StorageBlockInfo.hpp"
 #include "utility/lip_filter/LIPFilterAdaptiveProber.hpp"
-#include "utility/lip_filter/LIPFilterDeployment.hpp"
+#include "utility/lip_filter/LIPFilterUtil.hpp"
 
 #include "tmb/id_typedefs.h"
 
@@ -40,24 +40,15 @@ bool AggregationOperator::getAllWorkOrders(
     StorageManager *storage_manager,
     const tmb::client_id scheduler_client_id,
     tmb::MessageBus *bus) {
-  const LIPFilterDeployment *lip_filter_deployment = nullptr;
-  if (lip_deployment_index_ != QueryContext::kInvalidLIPDeploymentId) {
-    lip_filter_deployment = 
query_context->getLIPDeployment(lip_deployment_index_);
-  }
-
   if (input_relation_is_stored_) {
     if (!started_) {
       for (const block_id input_block_id : input_relation_block_ids_) {
-        LIPFilterAdaptiveProber *lip_filter_adaptive_prober = nullptr;
-        if (lip_filter_deployment != nullptr) {
-          lip_filter_adaptive_prober = 
lip_filter_deployment->createLIPFilterAdaptiveProber();
-        }
         container->addNormalWorkOrder(
             new AggregationWorkOrder(
                 query_id_,
                 input_block_id,
                 query_context->getAggregationState(aggr_state_index_),
-                lip_filter_adaptive_prober),
+                MakeLIPFilterAdaptiveProber(lip_deployment_index_, 
query_context)),
             op_index_);
       }
       started_ = true;
@@ -65,16 +56,12 @@ bool AggregationOperator::getAllWorkOrders(
     return started_;
   } else {
     while (num_workorders_generated_ < input_relation_block_ids_.size()) {
-      LIPFilterAdaptiveProber *lip_filter_adaptive_prober = nullptr;
-      if (lip_filter_deployment != nullptr) {
-        lip_filter_adaptive_prober = 
lip_filter_deployment->createLIPFilterAdaptiveProber();
-      }
       container->addNormalWorkOrder(
           new AggregationWorkOrder(
               query_id_,
               input_relation_block_ids_[num_workorders_generated_],
               query_context->getAggregationState(aggr_state_index_),
-              lip_filter_adaptive_prober),
+              MakeLIPFilterAdaptiveProber(lip_deployment_index_, 
query_context)),
           op_index_);
       ++num_workorders_generated_;
     }
@@ -103,6 +90,7 @@ bool 
AggregationOperator::getAllWorkOrderProtos(WorkOrderProtosContainer *contai
 }
 
 serialization::WorkOrder* AggregationOperator::createWorkOrderProto(const 
block_id block) {
+  // TODO(jianqiao): LIPFilter
   serialization::WorkOrder *proto = new serialization::WorkOrder;
   proto->set_work_order_type(serialization::AGGREGATION);
   proto->set_query_id(query_id_);
@@ -113,7 +101,6 @@ serialization::WorkOrder* 
AggregationOperator::createWorkOrderProto(const block_
   return proto;
 }
 
-
 void AggregationWorkOrder::execute() {
   state_->aggregateBlock(input_block_id_, lip_filter_adaptive_prober_.get());
 }

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0ffb8184/relational_operators/AggregationOperator.hpp
----------------------------------------------------------------------
diff --git a/relational_operators/AggregationOperator.hpp 
b/relational_operators/AggregationOperator.hpp
index da36d57..b5ed977 100644
--- a/relational_operators/AggregationOperator.hpp
+++ b/relational_operators/AggregationOperator.hpp
@@ -138,11 +138,12 @@ class AggregationWorkOrder : public WorkOrder {
    * @param query_id The ID of this query.
    * @param input_block_id The block id.
    * @param state The AggregationState to use.
+   * @param lip_filter_adaptive_prober The attached LIP filter prober.
    **/
   AggregationWorkOrder(const std::size_t query_id,
                        const block_id input_block_id,
                        AggregationOperationState *state,
-                       LIPFilterAdaptiveProber *lip_filter_adaptive_prober)
+                       LIPFilterAdaptiveProber *lip_filter_adaptive_prober = 
nullptr)
       : WorkOrder(query_id),
         input_block_id_(input_block_id),
         state_(DCHECK_NOTNULL(state)),

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0ffb8184/relational_operators/BuildHashOperator.cpp
----------------------------------------------------------------------
diff --git a/relational_operators/BuildHashOperator.cpp 
b/relational_operators/BuildHashOperator.cpp
index c0c0a4e..aafbb46 100644
--- a/relational_operators/BuildHashOperator.cpp
+++ b/relational_operators/BuildHashOperator.cpp
@@ -35,7 +35,7 @@
 #include "storage/TupleStorageSubBlock.hpp"
 #include "storage/ValueAccessor.hpp"
 #include "utility/lip_filter/LIPFilterBuilder.hpp"
-#include "utility/lip_filter/LIPFilterDeployment.hpp"
+#include "utility/lip_filter/LIPFilterUtil.hpp"
 
 #include "glog/logging.h"
 
@@ -70,12 +70,6 @@ bool BuildHashOperator::getAllWorkOrders(
     tmb::MessageBus *bus) {
   DCHECK(query_context != nullptr);
 
-  LIPFilterBuilderPtr lip_filter_builder = nullptr;
-  if (lip_deployment_index_ != QueryContext::kInvalidLIPDeploymentId) {
-    lip_filter_builder = std::shared_ptr<LIPFilterBuilder>(
-        
query_context->getLIPDeployment(lip_deployment_index_)->createLIPFilterBuilder());
-  }
-
   JoinHashTable *hash_table = 
query_context->getJoinHashTable(hash_table_index_);
   if (input_relation_is_stored_) {
     if (!started_) {
@@ -88,7 +82,7 @@ bool BuildHashOperator::getAllWorkOrders(
                                    input_block_id,
                                    hash_table,
                                    storage_manager,
-                                   lip_filter_builder),
+                                   MakeLIPFilterBuilder(lip_deployment_index_, 
query_context)),
             op_index_);
       }
       started_ = true;
@@ -105,7 +99,7 @@ bool BuildHashOperator::getAllWorkOrders(
               input_relation_block_ids_[num_workorders_generated_],
               hash_table,
               storage_manager,
-              lip_filter_builder),
+              MakeLIPFilterBuilder(lip_deployment_index_, query_context)),
           op_index_);
       ++num_workorders_generated_;
     }

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0ffb8184/relational_operators/BuildHashOperator.hpp
----------------------------------------------------------------------
diff --git a/relational_operators/BuildHashOperator.hpp 
b/relational_operators/BuildHashOperator.hpp
index e1963b0..0f96ef2 100644
--- a/relational_operators/BuildHashOperator.hpp
+++ b/relational_operators/BuildHashOperator.hpp
@@ -173,7 +173,7 @@ class BuildHashWorkOrder : public WorkOrder {
                      const block_id build_block_id,
                      JoinHashTable *hash_table,
                      StorageManager *storage_manager,
-                     LIPFilterBuilderPtr lip_filter_builder = nullptr)
+                     LIPFilterBuilder *lip_filter_builder = nullptr)
       : WorkOrder(query_id),
         input_relation_(input_relation),
         join_key_attributes_(join_key_attributes),
@@ -203,7 +203,7 @@ class BuildHashWorkOrder : public WorkOrder {
                      const block_id build_block_id,
                      JoinHashTable *hash_table,
                      StorageManager *storage_manager,
-                     LIPFilterBuilderPtr lip_filter_builder = nullptr)
+                     LIPFilterBuilder *lip_filter_builder = nullptr)
       : WorkOrder(query_id),
         input_relation_(input_relation),
         join_key_attributes_(std::move(join_key_attributes)),
@@ -230,7 +230,7 @@ class BuildHashWorkOrder : public WorkOrder {
   JoinHashTable *hash_table_;
   StorageManager *storage_manager_;
 
-  LIPFilterBuilderPtr lip_filter_builder_;
+  std::unique_ptr<LIPFilterBuilder> lip_filter_builder_;
 
   DISALLOW_COPY_AND_ASSIGN(BuildHashWorkOrder);
 };

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0ffb8184/relational_operators/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/relational_operators/CMakeLists.txt 
b/relational_operators/CMakeLists.txt
index ef3c6b0..ff40965 100644
--- a/relational_operators/CMakeLists.txt
+++ b/relational_operators/CMakeLists.txt
@@ -93,7 +93,7 @@ 
target_link_libraries(quickstep_relationaloperators_AggregationOperator
                       quickstep_storage_StorageBlockInfo
                       quickstep_utility_Macros
                       quickstep_utility_lipfilter_LIPFilterAdaptiveProber
-                      quickstep_utility_lipfilter_LIPFilterDeployment
+                      quickstep_utility_lipfilter_LIPFilterUtil
                       tmb)
 target_link_libraries(quickstep_relationaloperators_BuildHashOperator
                       glog
@@ -114,7 +114,7 @@ 
target_link_libraries(quickstep_relationaloperators_BuildHashOperator
                       quickstep_storage_ValueAccessor
                       quickstep_utility_Macros
                       quickstep_utility_lipfilter_LIPFilterBuilder
-                      quickstep_utility_lipfilter_LIPFilterDeployment
+                      quickstep_utility_lipfilter_LIPFilterUtil
                       tmb)
 target_link_libraries(quickstep_relationaloperators_CreateIndexOperator
                       glog
@@ -228,7 +228,7 @@ 
target_link_libraries(quickstep_relationaloperators_HashJoinOperator
                       quickstep_types_containers_ColumnVectorsValueAccessor
                       quickstep_utility_Macros
                       quickstep_utility_lipfilter_LIPFilterAdaptiveProber
-                      quickstep_utility_lipfilter_LIPFilterDeployment
+                      quickstep_utility_lipfilter_LIPFilterUtil
                       tmb)
 target_link_libraries(quickstep_relationaloperators_InsertOperator
                       glog
@@ -330,7 +330,7 @@ 
target_link_libraries(quickstep_relationaloperators_SelectOperator
                       quickstep_storage_StorageManager
                       quickstep_utility_Macros
                       quickstep_utility_lipfilter_LIPFilterAdaptiveProber
-                      quickstep_utility_lipfilter_LIPFilterDeployment
+                      quickstep_utility_lipfilter_LIPFilterUtil
                       tmb)
 if(QUICKSTEP_HAVE_LIBNUMA)
 target_link_libraries(quickstep_relationaloperators_SelectOperator

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0ffb8184/relational_operators/HashJoinOperator.cpp
----------------------------------------------------------------------
diff --git a/relational_operators/HashJoinOperator.cpp 
b/relational_operators/HashJoinOperator.cpp
index f57477b..1ac13d3 100644
--- a/relational_operators/HashJoinOperator.cpp
+++ b/relational_operators/HashJoinOperator.cpp
@@ -49,7 +49,7 @@
 #include "types/containers/ColumnVector.hpp"
 #include "types/containers/ColumnVectorsValueAccessor.hpp"
 #include "utility/lip_filter/LIPFilterAdaptiveProber.hpp"
-#include "utility/lip_filter/LIPFilterDeployment.hpp"
+#include "utility/lip_filter/LIPFilterUtil.hpp"
 
 #include "gflags/gflags.h"
 #include "glog/logging.h"
@@ -178,11 +178,6 @@ bool HashJoinOperator::getAllNonOuterJoinWorkOrders(
   if (blocking_dependencies_met_) {
     DCHECK(query_context != nullptr);
 
-    const LIPFilterDeployment *lip_filter_deployment = nullptr;
-    if (lip_deployment_index_ != QueryContext::kInvalidLIPDeploymentId) {
-      lip_filter_deployment = 
query_context->getLIPDeployment(lip_deployment_index_);
-    }
-
     const Predicate *residual_predicate =
         query_context->getPredicate(residual_predicate_index_);
     const vector<unique_ptr<const Scalar>> &selection =
@@ -195,9 +190,6 @@ bool HashJoinOperator::getAllNonOuterJoinWorkOrders(
     if (probe_relation_is_stored_) {
       if (!started_) {
         for (const block_id probe_block_id : probe_relation_block_ids_) {
-          LIPFilterAdaptiveProber *lip_filter_adaptive_prober =
-              lip_filter_deployment == nullptr ? nullptr :
-                  lip_filter_deployment->createLIPFilterAdaptiveProber();
           container->addNormalWorkOrder(
               new JoinWorkOrderClass(query_id_,
                                      build_relation_,
@@ -210,7 +202,7 @@ bool HashJoinOperator::getAllNonOuterJoinWorkOrders(
                                      hash_table,
                                      output_destination,
                                      storage_manager,
-                                     lip_filter_adaptive_prober),
+                                     
MakeLIPFilterAdaptiveProber(lip_deployment_index_, query_context)),
               op_index_);
         }
         started_ = true;
@@ -218,9 +210,6 @@ bool HashJoinOperator::getAllNonOuterJoinWorkOrders(
       return started_;
     } else {
       while (num_workorders_generated_ < probe_relation_block_ids_.size()) {
-        LIPFilterAdaptiveProber *lip_filter_adaptive_prober =
-            lip_filter_deployment == nullptr ? nullptr :
-                lip_filter_deployment->createLIPFilterAdaptiveProber();
         container->addNormalWorkOrder(
             new JoinWorkOrderClass(
                 query_id_,
@@ -234,7 +223,7 @@ bool HashJoinOperator::getAllNonOuterJoinWorkOrders(
                 hash_table,
                 output_destination,
                 storage_manager,
-                lip_filter_adaptive_prober),
+                MakeLIPFilterAdaptiveProber(lip_deployment_index_, 
query_context)),
             op_index_);
         ++num_workorders_generated_;
       }  // end while

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0ffb8184/relational_operators/SelectOperator.cpp
----------------------------------------------------------------------
diff --git a/relational_operators/SelectOperator.cpp 
b/relational_operators/SelectOperator.cpp
index 9c0a5f9..983d3ee 100644
--- a/relational_operators/SelectOperator.cpp
+++ b/relational_operators/SelectOperator.cpp
@@ -31,7 +31,7 @@
 #include "storage/StorageBlockInfo.hpp"
 #include "storage/StorageManager.hpp"
 #include "utility/lip_filter/LIPFilterAdaptiveProber.hpp"
-#include "utility/lip_filter/LIPFilterDeployment.hpp"
+#include "utility/lip_filter/LIPFilterUtil.hpp"
 
 #include "glog/logging.h"
 
@@ -42,35 +42,29 @@ namespace quickstep {
 class Predicate;
 
 void SelectOperator::addWorkOrders(WorkOrdersContainer *container,
+                                   QueryContext *query_context,
                                    StorageManager *storage_manager,
                                    const Predicate *predicate,
                                    const std::vector<std::unique_ptr<const 
Scalar>> *selection,
-                                   InsertDestination *output_destination,
-                                   const LIPFilterDeployment 
*lip_filter_deployment) {
+                                   InsertDestination *output_destination) {
   if (input_relation_is_stored_) {
     for (const block_id input_block_id : input_relation_block_ids_) {
-      LIPFilterAdaptiveProber *lip_filter_adaptive_prober = nullptr;
-      if (lip_filter_deployment != nullptr) {
-        lip_filter_adaptive_prober = 
lip_filter_deployment->createLIPFilterAdaptiveProber();
-      }
-      container->addNormalWorkOrder(new SelectWorkOrder(query_id_,
-                                                        input_relation_,
-                                                        input_block_id,
-                                                        predicate,
-                                                        simple_projection_,
-                                                        simple_selection_,
-                                                        selection,
-                                                        output_destination,
-                                                        storage_manager,
-                                                        
lip_filter_adaptive_prober),
-                                    op_index_);
+      container->addNormalWorkOrder(
+          new SelectWorkOrder(
+              query_id_,
+              input_relation_,
+              input_block_id,
+              predicate,
+              simple_projection_,
+              simple_selection_,
+              selection,
+              output_destination,
+              storage_manager,
+              MakeLIPFilterAdaptiveProber(lip_deployment_index_, 
query_context)),
+          op_index_);
     }
   } else {
     while (num_workorders_generated_ < input_relation_block_ids_.size()) {
-      LIPFilterAdaptiveProber *lip_filter_adaptive_prober = nullptr;
-      if (lip_filter_deployment != nullptr) {
-        lip_filter_adaptive_prober = 
lip_filter_deployment->createLIPFilterAdaptiveProber();
-      }
       container->addNormalWorkOrder(
           new SelectWorkOrder(
               query_id_,
@@ -81,7 +75,8 @@ void SelectOperator::addWorkOrders(WorkOrdersContainer 
*container,
               simple_selection_,
               selection,
               output_destination,
-              storage_manager),
+              storage_manager,
+              MakeLIPFilterAdaptiveProber(lip_deployment_index_, 
query_context)),
           op_index_);
       ++num_workorders_generated_;
     }
@@ -90,21 +85,17 @@ void SelectOperator::addWorkOrders(WorkOrdersContainer 
*container,
 
 #ifdef QUICKSTEP_HAVE_LIBNUMA
 void SelectOperator::addPartitionAwareWorkOrders(WorkOrdersContainer 
*container,
+                                                 QueryContext *query_context,
                                                  StorageManager 
*storage_manager,
                                                  const Predicate *predicate,
                                                  const 
std::vector<std::unique_ptr<const Scalar>> *selection,
-                                                 InsertDestination 
*output_destination,
-                                                 const LIPFilterDeployment 
*lip_filter_deployment) {
+                                                 InsertDestination 
*output_destination) {
   DCHECK(placement_scheme_ != nullptr);
   const std::size_t num_partitions = 
input_relation_.getPartitionScheme().getPartitionSchemeHeader().getNumPartitions();
   if (input_relation_is_stored_) {
     for (std::size_t part_id = 0; part_id < num_partitions; ++part_id) {
       for (const block_id input_block_id :
            input_relation_block_ids_in_partition_[part_id]) {
-        LIPFilterAdaptiveProber *lip_filter_adaptive_prober = nullptr;
-        if (lip_filter_deployment != nullptr) {
-          lip_filter_adaptive_prober = 
lip_filter_deployment->createLIPFilterAdaptiveProber();
-        }
         container->addNormalWorkOrder(
             new SelectWorkOrder(
                 query_id_,
@@ -116,7 +107,7 @@ void 
SelectOperator::addPartitionAwareWorkOrders(WorkOrdersContainer *container,
                 selection,
                 output_destination,
                 storage_manager,
-                lip_filter_adaptive_prober,
+                MakeLIPFilterAdaptiveProber(lip_deployment_index_, 
query_context),
                 placement_scheme_->getNUMANodeForBlock(input_block_id)),
             op_index_);
       }
@@ -127,10 +118,6 @@ void 
SelectOperator::addPartitionAwareWorkOrders(WorkOrdersContainer *container,
              input_relation_block_ids_in_partition_[part_id].size()) {
         block_id block_in_partition
             = 
input_relation_block_ids_in_partition_[part_id][num_workorders_generated_in_partition_[part_id]];
-        LIPFilterAdaptiveProber *lip_filter_adaptive_prober = nullptr;
-        if (lip_filter_deployment != nullptr) {
-          lip_filter_adaptive_prober = 
lip_filter_deployment->createLIPFilterAdaptiveProber();
-        }
         container->addNormalWorkOrder(
             new SelectWorkOrder(
                 query_id_,
@@ -142,7 +129,7 @@ void 
SelectOperator::addPartitionAwareWorkOrders(WorkOrdersContainer *container,
                 selection,
                 output_destination,
                 storage_manager,
-                lip_filter_adaptive_prober,
+                MakeLIPFilterAdaptiveProber(lip_deployment_index_, 
query_context),
                 placement_scheme_->getNUMANodeForBlock(block_in_partition)),
             op_index_);
         ++num_workorders_generated_in_partition_[part_id];
@@ -169,31 +156,26 @@ bool SelectOperator::getAllWorkOrders(
   InsertDestination *output_destination =
       query_context->getInsertDestination(output_destination_index_);
 
-  const LIPFilterDeployment *lip_filter_deployment = nullptr;
-  if (lip_deployment_index_ != QueryContext::kInvalidLIPDeploymentId) {
-    lip_filter_deployment = 
query_context->getLIPDeployment(lip_deployment_index_);
-  }
-
   if (input_relation_is_stored_) {
     if (!started_) {
       if (input_relation_.hasPartitionScheme()) {
 #ifdef QUICKSTEP_HAVE_LIBNUMA
         if (input_relation_.hasNUMAPlacementScheme()) {
           addPartitionAwareWorkOrders(container,
+                                      query_context,
                                       storage_manager,
                                       predicate,
                                       selection,
-                                      output_destination,
-                                      lip_filter_deployment);
+                                      output_destination);
         }
 #endif
       } else {
         addWorkOrders(container,
+                      query_context,
                       storage_manager,
                       predicate,
                       selection,
-                      output_destination,
-                      lip_filter_deployment);
+                      output_destination);
       }
       started_ = true;
     }
@@ -203,20 +185,20 @@ bool SelectOperator::getAllWorkOrders(
 #ifdef QUICKSTEP_HAVE_LIBNUMA
         if (input_relation_.hasNUMAPlacementScheme()) {
           addPartitionAwareWorkOrders(container,
+                                      query_context,
                                       storage_manager,
                                       predicate,
                                       selection,
-                                      output_destination,
-                                      lip_filter_deployment);
+                                      output_destination);
         }
 #endif
     } else {
         addWorkOrders(container,
+                      query_context,
                       storage_manager,
                       predicate,
                       selection,
-                      output_destination,
-                      lip_filter_deployment);
+                      output_destination);
     }
     return done_feeding_input_relation_;
   }

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0ffb8184/relational_operators/SelectOperator.hpp
----------------------------------------------------------------------
diff --git a/relational_operators/SelectOperator.hpp 
b/relational_operators/SelectOperator.hpp
index 0d2ae16..2ace458 100644
--- a/relational_operators/SelectOperator.hpp
+++ b/relational_operators/SelectOperator.hpp
@@ -249,18 +249,18 @@ class SelectOperator : public RelationalOperator {
   }
 
   void addWorkOrders(WorkOrdersContainer *container,
+                     QueryContext *query_context,
                      StorageManager *storage_manager,
                      const Predicate *predicate,
                      const std::vector<std::unique_ptr<const Scalar>> 
*selection,
-                     InsertDestination *output_destination,
-                     const LIPFilterDeployment *lip_filter_deployment);
+                     InsertDestination *output_destination);
 
   void addPartitionAwareWorkOrders(WorkOrdersContainer *container,
+                                   QueryContext *query_context,
                                    StorageManager *storage_manager,
                                    const Predicate *predicate,
                                    const std::vector<std::unique_ptr<const 
Scalar>> *selection,
-                                   InsertDestination *output_destination,
-                                   const LIPFilterDeployment 
*lip_filter_deployment);
+                                   InsertDestination *output_destination);
 
  private:
   /**
@@ -322,6 +322,7 @@ class SelectWorkOrder : public WorkOrder {
    * @param output_destination The InsertDestination to insert the selection
    *        results.
    * @param storage_manager The StorageManager to use.
+   * @param lip_filter_adaptive_prober The attached LIP filter prober.
    **/
   SelectWorkOrder(const std::size_t query_id,
                   const CatalogRelationSchema &input_relation,
@@ -366,6 +367,7 @@ class SelectWorkOrder : public WorkOrder {
    * @param output_destination The InsertDestination to insert the selection
    *        results.
    * @param storage_manager The StorageManager to use.
+   * @param lip_filter_adaptive_prober The attached LIP filter prober.
    **/
   SelectWorkOrder(const std::size_t query_id,
                   const CatalogRelationSchema &input_relation,

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0ffb8184/utility/lip_filter/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/utility/lip_filter/CMakeLists.txt 
b/utility/lip_filter/CMakeLists.txt
index b7224d2..23b3763 100644
--- a/utility/lip_filter/CMakeLists.txt
+++ b/utility/lip_filter/CMakeLists.txt
@@ -25,6 +25,7 @@ 
add_library(quickstep_utility_lipfilter_LIPFilterAdaptiveProber ../../empty_src.
 add_library(quickstep_utility_lipfilter_LIPFilterBuilder ../../empty_src.cpp 
LIPFilterBuilder.hpp)
 add_library(quickstep_utility_lipfilter_LIPFilterDeployment 
LIPFilterDeployment.cpp LIPFilterDeployment.hpp)
 add_library(quickstep_utility_lipfilter_LIPFilterFactory LIPFilterFactory.cpp 
LIPFilterFactory.hpp)
+add_library(quickstep_utility_lipfilter_LIPFilterUtil ../../empty_src.cpp 
LIPFilterUtil.hpp)
 add_library(quickstep_utility_lipfilter_LIPFilter_proto
             ${utility_lipfilter_LIPFilter_proto_srcs})
 add_library(quickstep_utility_lipfilter_SingleIdentityHashFilter 
../../empty_src.cpp SingleIdentityHashFilter.hpp)
@@ -58,6 +59,9 @@ 
target_link_libraries(quickstep_utility_lipfilter_LIPFilterFactory
                       quickstep_utility_lipfilter_LIPFilter_proto
                       quickstep_utility_lipfilter_SingleIdentityHashFilter
                       quickstep_utility_Macros)
+target_link_libraries(quickstep_utility_lipfilter_LIPFilterUtil
+                      quickstep_queryexecution_QueryContext
+                      quickstep_utility_lipfilter_LIPFilterDeployment)
 target_link_libraries(quickstep_utility_lipfilter_LIPFilter_proto
                       ${PROTOBUF_LIBRARY}
                       quickstep_types_Type_proto)

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0ffb8184/utility/lip_filter/LIPFilterBuilder.hpp
----------------------------------------------------------------------
diff --git a/utility/lip_filter/LIPFilterBuilder.hpp 
b/utility/lip_filter/LIPFilterBuilder.hpp
index deb8f66..aa84a06 100644
--- a/utility/lip_filter/LIPFilterBuilder.hpp
+++ b/utility/lip_filter/LIPFilterBuilder.hpp
@@ -39,9 +39,6 @@ class ValueAccessor;
  *  @{
  */
 
-class LIPFilterBuilder;
-typedef std::shared_ptr<LIPFilterBuilder> LIPFilterBuilderPtr;
-
 /**
  * @brief Helper class for building LIPFilters from a relation (i.e. 
ValueAccessor).
  */

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0ffb8184/utility/lip_filter/LIPFilterUtil.hpp
----------------------------------------------------------------------
diff --git a/utility/lip_filter/LIPFilterUtil.hpp 
b/utility/lip_filter/LIPFilterUtil.hpp
new file mode 100644
index 0000000..9446e23
--- /dev/null
+++ b/utility/lip_filter/LIPFilterUtil.hpp
@@ -0,0 +1,63 @@
+/**
+ * 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_UTILITY_LIP_FILTER_LIP_FILTER_FACTORY_HPP_
+#define QUICKSTEP_UTILITY_LIP_FILTER_LIP_FILTER_FACTORY_HPP_
+
+#include "query_execution/QueryContext.hpp"
+#include "utility/lip_filter/LIPFilterDeployment.hpp"
+
+namespace quickstep {
+
+class LIPFilterBuilder;
+class LIPFilterAdaptiveProber;
+
+/** \addtogroup Utility
+ *  @{
+ */
+
+inline LIPFilterBuilder* MakeLIPFilterBuilder(
+    const QueryContext::lip_deployment_id lip_deployment_index,
+    const QueryContext *query_context) {
+  if (lip_deployment_index == QueryContext::kInvalidLIPDeploymentId) {
+    return nullptr;
+  } else {
+    const LIPFilterDeployment *lip_filter_deployment =
+        query_context->getLIPDeployment(lip_deployment_index);
+    return lip_filter_deployment->createLIPFilterBuilder();
+  }
+}
+
+inline LIPFilterAdaptiveProber* MakeLIPFilterAdaptiveProber(
+    const QueryContext::lip_deployment_id lip_deployment_index,
+    const QueryContext *query_context) {
+  if (lip_deployment_index == QueryContext::kInvalidLIPDeploymentId) {
+    return nullptr;
+  } else {
+    const LIPFilterDeployment *lip_filter_deployment =
+        query_context->getLIPDeployment(lip_deployment_index);
+    return lip_filter_deployment->createLIPFilterAdaptiveProber();
+  }
+}
+
+/** @} */
+
+}  // namespace quickstep
+
+#endif  // QUICKSTEP_UTILITY_LIP_FILTER_LIP_FILTER_FACTORY_HPP_

Reply via email to