Repository: incubator-quickstep Updated Branches: refs/heads/LIP-for-tpch 82e7efd93 -> e7524cbbd
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/e7524cbb Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/e7524cbb Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/e7524cbb Branch: refs/heads/LIP-for-tpch Commit: e7524cbbd633c5553d7aaa812998717d8bbb7b16 Parents: 82e7efd Author: Jianqiao Zhu <jianq...@cs.wisc.edu> Authored: Mon Aug 15 14:50:45 2016 -0500 Committer: Jianqiao Zhu <jianq...@cs.wisc.edu> Committed: Mon Aug 15 14:50:45 2016 -0500 ---------------------------------------------------------------------- catalog/CMakeLists.txt | 3 +++ query_optimizer/CMakeLists.txt | 3 +++ query_optimizer/cost_model/CMakeLists.txt | 2 ++ relational_operators/CMakeLists.txt | 2 ++ relational_operators/SelectOperator.cpp | 21 +++++++++++++++++---- relational_operators/SelectOperator.hpp | 10 ++++++---- storage/CMakeLists.txt | 7 +++++++ storage/StorageBlock.cpp | 15 ++++++++++++--- utility/CMakeLists.txt | 4 ++++ utility/EventProfiler.cpp | 2 +- utility/EventProfiler.hpp | 2 +- 11 files changed, 58 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e7524cbb/catalog/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/catalog/CMakeLists.txt b/catalog/CMakeLists.txt index fc01458..3302bb5 100644 --- a/catalog/CMakeLists.txt +++ b/catalog/CMakeLists.txt @@ -127,6 +127,9 @@ target_link_libraries(quickstep_catalog_CatalogRelationConstraints target_link_libraries(quickstep_catalog_CatalogRelationStatistics quickstep_catalog_CatalogTypedefs quickstep_catalog_Catalog_proto + quickstep_types_LongType + quickstep_types_NullType + quickstep_types_TypedValue quickstep_utility_Macros) target_link_libraries(quickstep_catalog_IndexScheme glog http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e7524cbb/query_optimizer/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/query_optimizer/CMakeLists.txt b/query_optimizer/CMakeLists.txt index aaad17c..7440151 100644 --- a/query_optimizer/CMakeLists.txt +++ b/query_optimizer/CMakeLists.txt @@ -160,6 +160,9 @@ target_link_libraries(quickstep_queryoptimizer_ExecutionHeuristics quickstep_queryexecution_QueryContext quickstep_queryexecution_QueryContext_proto quickstep_queryoptimizer_QueryPlan + quickstep_queryoptimizer_physical_HashJoin + quickstep_queryoptimizer_physical_Physical + quickstep_relationaloperators_SelectOperator quickstep_utility_Macros) target_link_libraries(quickstep_queryoptimizer_LogicalGenerator glog http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e7524cbb/query_optimizer/cost_model/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/query_optimizer/cost_model/CMakeLists.txt b/query_optimizer/cost_model/CMakeLists.txt index abbc3da..0a3db16 100644 --- a/query_optimizer/cost_model/CMakeLists.txt +++ b/query_optimizer/cost_model/CMakeLists.txt @@ -45,6 +45,8 @@ target_link_libraries(quickstep_queryoptimizer_costmodel_SimpleCostModel target_link_libraries(quickstep_queryoptimizer_costmodel_StarSchemaSimpleCostModel glog quickstep_catalog_CatalogRelation + quickstep_catalog_CatalogRelationStatistics + quickstep_catalog_CatalogTypedefs quickstep_queryoptimizer_costmodel_CostModel quickstep_queryoptimizer_expressions_AttributeReference quickstep_queryoptimizer_expressions_ComparisonExpression http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e7524cbb/relational_operators/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/relational_operators/CMakeLists.txt b/relational_operators/CMakeLists.txt index 43a42f9..6d71794 100644 --- a/relational_operators/CMakeLists.txt +++ b/relational_operators/CMakeLists.txt @@ -302,6 +302,8 @@ target_link_libraries(quickstep_relationaloperators_SelectOperator quickstep_storage_StorageBlock quickstep_storage_StorageBlockInfo quickstep_storage_StorageManager + quickstep_utility_BloomFilterAdapter + quickstep_utility_EventProfiler quickstep_utility_Macros tmb) if(QUICKSTEP_HAVE_LIBNUMA) http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e7524cbb/relational_operators/SelectOperator.cpp ---------------------------------------------------------------------- diff --git a/relational_operators/SelectOperator.cpp b/relational_operators/SelectOperator.cpp index 5a67e2d..9b615cc 100644 --- a/relational_operators/SelectOperator.cpp +++ b/relational_operators/SelectOperator.cpp @@ -30,6 +30,7 @@ #include "storage/StorageBlock.hpp" #include "storage/StorageBlockInfo.hpp" #include "storage/StorageManager.hpp" +#include "utility/EventProfiler.hpp" #include "glog/logging.h" @@ -58,7 +59,9 @@ void SelectOperator::addWorkOrders(WorkOrdersContainer *container, simple_selection_, selection, output_destination, - storage_manager), + storage_manager, + 0, + op_index_), op_index_); } } else { @@ -75,7 +78,9 @@ void SelectOperator::addWorkOrders(WorkOrdersContainer *container, simple_selection_, selection, output_destination, - storage_manager), + storage_manager, + 0, + op_index_), op_index_); ++num_workorders_generated_; } @@ -109,7 +114,8 @@ void SelectOperator::addPartitionAwareWorkOrders(WorkOrdersContainer *container, selection, output_destination, storage_manager, - placement_scheme_->getNUMANodeForBlock(input_block_id)), + placement_scheme_->getNUMANodeForBlock(input_block_id), + op_index_), op_index_); } } @@ -132,7 +138,8 @@ void SelectOperator::addPartitionAwareWorkOrders(WorkOrdersContainer *container, selection, output_destination, storage_manager, - placement_scheme_->getNUMANodeForBlock(block_in_partition)), + placement_scheme_->getNUMANodeForBlock(block_in_partition), + op_index_), op_index_); ++num_workorders_generated_in_partition_[part_id]; } @@ -261,6 +268,10 @@ serialization::WorkOrder* SelectOperator::createWorkOrderProto(const block_id bl void SelectWorkOrder::execute() { +// auto *container = simple_profiler.getContainer(); +// container->setContext(getOperatorIndex()); +// auto *line = container->getEventLine(0); +// line->emplace_back(); BlockReference block( storage_manager_->getBlock(input_block_id_, input_relation_, getPreferredNUMANodes()[0])); @@ -277,6 +288,8 @@ void SelectWorkOrder::execute() { bloom_filter_attribute_ids_, output_destination_); } +// line->back().endEvent(); +// line->back().setPayload(getOperatorIndex(), 0); } } // namespace quickstep http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e7524cbb/relational_operators/SelectOperator.hpp ---------------------------------------------------------------------- diff --git a/relational_operators/SelectOperator.hpp b/relational_operators/SelectOperator.hpp index bc587a1..6758f1b 100644 --- a/relational_operators/SelectOperator.hpp +++ b/relational_operators/SelectOperator.hpp @@ -345,8 +345,9 @@ class SelectWorkOrder : public WorkOrder { const std::vector<std::unique_ptr<const Scalar>> *selection, InsertDestination *output_destination, StorageManager *storage_manager, - const numa_node_id numa_node = 0) - : WorkOrder(query_id), + const numa_node_id numa_node = 0, + const int op_index = -1) + : WorkOrder(query_id, op_index), input_relation_(input_relation), input_block_id_(input_block_id), predicate_(predicate), @@ -391,8 +392,9 @@ class SelectWorkOrder : public WorkOrder { const std::vector<std::unique_ptr<const Scalar>> *selection, InsertDestination *output_destination, StorageManager *storage_manager, - const numa_node_id numa_node = 0) - : WorkOrder(query_id), + const numa_node_id numa_node = 0, + const int op_index = -1) + : WorkOrder(query_id, op_index), input_relation_(input_relation), input_block_id_(input_block_id), predicate_(predicate), http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e7524cbb/storage/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/storage/CMakeLists.txt b/storage/CMakeLists.txt index 8fbe7de..11e7f40 100644 --- a/storage/CMakeLists.txt +++ b/storage/CMakeLists.txt @@ -289,10 +289,14 @@ target_link_libraries(quickstep_storage_AggregationOperationState quickstep_storage_StorageBlock quickstep_storage_StorageBlockInfo quickstep_storage_StorageManager + quickstep_storage_ValueAccessor + quickstep_storage_ValueAccessorUtil quickstep_types_TypedValue quickstep_types_containers_ColumnVector quickstep_types_containers_ColumnVectorsValueAccessor quickstep_types_containers_Tuple + quickstep_utility_BloomFilter + quickstep_utility_BloomFilterAdapter quickstep_utility_Macros) target_link_libraries(quickstep_storage_AggregationOperationState_proto quickstep_expressions_Expressions_proto @@ -938,6 +942,9 @@ target_link_libraries(quickstep_storage_StorageBlock quickstep_types_containers_ColumnVectorsValueAccessor quickstep_types_containers_Tuple quickstep_types_operations_comparisons_ComparisonUtil + quickstep_utility_BloomFilter + quickstep_utility_BloomFilterAdapter + quickstep_utility_EventProfiler quickstep_utility_Macros quickstep_utility_PtrVector) # CMAKE_VALIDATE_IGNORE_BEGIN http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e7524cbb/storage/StorageBlock.cpp ---------------------------------------------------------------------- diff --git a/storage/StorageBlock.cpp b/storage/StorageBlock.cpp index 7bbba9a..a115af9 100644 --- a/storage/StorageBlock.cpp +++ b/storage/StorageBlock.cpp @@ -61,6 +61,7 @@ #include "types/operations/comparisons/ComparisonUtil.hpp" #include "utility/BloomFilter.hpp" #include "utility/BloomFilterAdapter.hpp" +#include "utility/EventProfiler.hpp" #include "utility/Macros.hpp" #include "gflags/gflags.h" @@ -432,6 +433,8 @@ void StorageBlock::selectSimple(const std::vector<attribute_id> &selection, InsertDestinationInterface *destination) const { std::unique_ptr<ValueAccessor> accessor; std::unique_ptr<TupleIdSequence> matches; +// auto *container = simple_profiler.getContainer(); +// auto *line = container->getEventLine(1); if (bloom_filters.size() > 0) { const std::size_t num_tuples = tuple_store_->numTuples(); @@ -486,7 +489,6 @@ void StorageBlock::selectSimple(const std::vector<attribute_id> &selection, matches.reset(new_matches); accessor.reset(tuple_store_->createValueAccessor(matches.get())); } - destination->bulkInsertTuplesWithRemappedAttributes(selection, accessor.get()); } @@ -1337,16 +1339,23 @@ TupleIdSequence* StorageBlock::getMatchesForPredicate(const Predicate *predicate std::unique_ptr<ValueAccessor> value_accessor(tuple_store_->createValueAccessor()); std::unique_ptr<TupleIdSequence> existence_map; + const TupleIdSequence *combined_filter; if (!tuple_store_->isPacked()) { existence_map.reset(tuple_store_->getExistenceMap()); + if (filter != nullptr) { + existence_map->intersectWith(*filter); + } + combined_filter = existence_map.get(); + } else { + combined_filter = filter; } SubBlocksReference sub_blocks_ref(*tuple_store_, indices_, indices_consistent_); return predicate->getAllMatches(value_accessor.get(), &sub_blocks_ref, - filter, - existence_map.get()); + nullptr, + combined_filter); } std::unordered_map<attribute_id, TypedValue>* StorageBlock::generateUpdatedValues( http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e7524cbb/utility/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/utility/CMakeLists.txt b/utility/CMakeLists.txt index 46389f0..5d8e8c2 100644 --- a/utility/CMakeLists.txt +++ b/utility/CMakeLists.txt @@ -259,11 +259,15 @@ target_link_libraries(quickstep_utility_PrimeNumber glog) target_link_libraries(quickstep_utility_PlanVisualizer quickstep_catalog_CatalogRelation + quickstep_catalog_CatalogRelationStatistics + quickstep_catalog_CatalogTypedefs quickstep_queryoptimizer_costmodel_StarSchemaSimpleCostModel quickstep_queryoptimizer_expressions_AttributeReference + quickstep_queryoptimizer_physical_Aggregate quickstep_queryoptimizer_physical_HashJoin quickstep_queryoptimizer_physical_Physical quickstep_queryoptimizer_physical_PhysicalType + quickstep_queryoptimizer_physical_Selection quickstep_queryoptimizer_physical_TableReference quickstep_queryoptimizer_physical_TopLevelPlan quickstep_utility_Macros http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e7524cbb/utility/EventProfiler.cpp ---------------------------------------------------------------------- diff --git a/utility/EventProfiler.cpp b/utility/EventProfiler.cpp index 728ebff..e345993 100644 --- a/utility/EventProfiler.cpp +++ b/utility/EventProfiler.cpp @@ -23,7 +23,7 @@ namespace quickstep { -EventProfiler<int, std::size_t> simple_profiler; +EventProfiler<int, std::size_t, std::size_t> simple_profiler; EventProfiler<std::size_t> relop_profiler; } // namespace quickstep http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e7524cbb/utility/EventProfiler.hpp ---------------------------------------------------------------------- diff --git a/utility/EventProfiler.hpp b/utility/EventProfiler.hpp index 70024e6..f7fa598 100644 --- a/utility/EventProfiler.hpp +++ b/utility/EventProfiler.hpp @@ -178,7 +178,7 @@ class EventProfiler { Mutex mutex_; }; -extern EventProfiler<int, std::size_t> simple_profiler; +extern EventProfiler<int, std::size_t, std::size_t> simple_profiler; extern EventProfiler<std::size_t> relop_profiler; /** @} */