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_