Minor refactor for InsertDestinations.
Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/f2e77266 Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/f2e77266 Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/f2e77266 Branch: refs/heads/reorder-partitioned-hash-join Commit: f2e77266edeaff38a60650b48836ff6ddb3b84ca Parents: 0f4938c Author: Zuyu Zhang <zu...@apache.org> Authored: Mon Jan 30 15:24:03 2017 -0800 Committer: Zuyu Zhang <zu...@apache.org> Committed: Mon Jan 30 15:24:03 2017 -0800 ---------------------------------------------------------------------- storage/InsertDestination.cpp | 17 ++++------------- storage/InsertDestination.hpp | 4 +++- storage/InsertDestinationInterface.hpp | 2 +- storage/StorageBlock.hpp | 2 +- 4 files changed, 9 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/f2e77266/storage/InsertDestination.cpp ---------------------------------------------------------------------- diff --git a/storage/InsertDestination.cpp b/storage/InsertDestination.cpp index 944998f..714e6e5 100644 --- a/storage/InsertDestination.cpp +++ b/storage/InsertDestination.cpp @@ -290,7 +290,6 @@ void InsertDestination::bulkInsertTuplesFromValueAccessors( ValueAccessor *accessor = p.first; std::vector<attribute_id> attribute_map = p.second; - InvokeOnAnyValueAccessor( accessor, [&](auto *accessor) -> void { // NOLINT(build/c++11) @@ -621,11 +620,10 @@ void PartitionAwareInsertDestination::bulkInsertTuples(ValueAccessor *accessor, &always_mark_full, &num_partitions](auto *accessor) -> void { // NOLINT(build/c++11) std::vector<std::unique_ptr<TupleIdSequence>> partition_membership; - partition_membership.resize(num_partitions); // Create a tuple-id sequence for each partition. for (std::size_t partition = 0; partition < num_partitions; ++partition) { - partition_membership[partition].reset(new TupleIdSequence(accessor->getEndPosition())); + partition_membership.emplace_back(std::make_unique<TupleIdSequence>(accessor->getEndPosition())); } // Iterate over ValueAccessor for each tuple, @@ -641,9 +639,8 @@ void PartitionAwareInsertDestination::bulkInsertTuples(ValueAccessor *accessor, // TupleIdSequence. std::vector<std::unique_ptr<typename std::remove_pointer< decltype(accessor->createSharedTupleIdSequenceAdapter(*partition_membership.front()))>::type>> adapter; - adapter.resize(num_partitions); for (std::size_t partition = 0; partition < num_partitions; ++partition) { - adapter[partition].reset(accessor->createSharedTupleIdSequenceAdapter(*partition_membership[partition])); + adapter.emplace_back(accessor->createSharedTupleIdSequenceAdapter(*partition_membership[partition])); } // Bulk-insert into a block belonging to the partition. @@ -678,11 +675,10 @@ void PartitionAwareInsertDestination::bulkInsertTuplesWithRemappedAttributes( &always_mark_full, &num_partitions](auto *accessor) -> void { // NOLINT(build/c++11) std::vector<std::unique_ptr<TupleIdSequence>> partition_membership; - partition_membership.resize(num_partitions); // Create a tuple-id sequence for each partition. for (std::size_t partition = 0; partition < num_partitions; ++partition) { - partition_membership[partition].reset(new TupleIdSequence(accessor->getEndPosition())); + partition_membership.emplace_back(std::make_unique<TupleIdSequence>(accessor->getEndPosition())); } // Iterate over ValueAccessor for each tuple, @@ -698,9 +694,8 @@ void PartitionAwareInsertDestination::bulkInsertTuplesWithRemappedAttributes( // TupleIdSequence. std::vector<std::unique_ptr<typename std::remove_pointer< decltype(accessor->createSharedTupleIdSequenceAdapter(*partition_membership.front()))>::type>> adapter; - adapter.resize(num_partitions); for (std::size_t partition = 0; partition < num_partitions; ++partition) { - adapter[partition].reset(accessor->createSharedTupleIdSequenceAdapter(*partition_membership[partition])); + adapter.emplace_back(accessor->createSharedTupleIdSequenceAdapter(*partition_membership[partition])); } // Bulk-insert into a block belonging to the partition. @@ -742,10 +737,6 @@ void PartitionAwareInsertDestination::insertTuplesFromVector(std::vector<Tuple>: } } -MutableBlockReference PartitionAwareInsertDestination::getBlockForInsertion() { - FATAL_ERROR("PartitionAwareInsertDestination::getBlockForInsertion needs a partition id as an argument."); -} - MutableBlockReference PartitionAwareInsertDestination::getBlockForInsertionInPartition(const partition_id part_id) { DCHECK_LT(part_id, partition_scheme_header_->getNumPartitions()); SpinMutexLock lock(mutexes_for_partition_[part_id]); http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/f2e77266/storage/InsertDestination.hpp ---------------------------------------------------------------------- diff --git a/storage/InsertDestination.hpp b/storage/InsertDestination.hpp index c3c40bd..6707192 100644 --- a/storage/InsertDestination.hpp +++ b/storage/InsertDestination.hpp @@ -539,7 +539,9 @@ class PartitionAwareInsertDestination : public InsertDestination { std::vector<Tuple>::const_iterator end) override; protected: - MutableBlockReference getBlockForInsertion() override; + MutableBlockReference getBlockForInsertion() override { + LOG(FATAL) << "PartitionAwareInsertDestination::getBlockForInsertion needs a partition id as an argument."; + } /** * @brief Get a block to use for insertion from a partition. http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/f2e77266/storage/InsertDestinationInterface.hpp ---------------------------------------------------------------------- diff --git a/storage/InsertDestinationInterface.hpp b/storage/InsertDestinationInterface.hpp index b62d3e5..be6b0c2 100644 --- a/storage/InsertDestinationInterface.hpp +++ b/storage/InsertDestinationInterface.hpp @@ -131,7 +131,7 @@ class InsertDestinationInterface { * * @param accessor_attribute_map A vector of pairs of ValueAccessor and * corresponding attribute map - * The i-th attribute ID in the attr map for a value accessor is "n" + * The i-th attribute ID in the attr map for a value accessor is "n" * if the attribute_id "i" in the output relation * is the attribute_id "n" in corresponding input value accessor. * Set the i-th element to kInvalidCatalogId if it doesn't come from http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/f2e77266/storage/StorageBlock.hpp ---------------------------------------------------------------------- diff --git a/storage/StorageBlock.hpp b/storage/StorageBlock.hpp index ed252c5..16ea50f 100644 --- a/storage/StorageBlock.hpp +++ b/storage/StorageBlock.hpp @@ -325,7 +325,7 @@ class StorageBlock : public StorageBlockBase { * function with the appropriate attribute_map for each value * accessor (InsertDestination::bulkInsertTuplesFromValueAccessors * handles all the details) to insert tuples without an extra temp copy. - * + * * @warning Must call bulkInsertPartialTuplesFinalize() to update the header, * until which point, the insertion is not visible to others. * @warning The inserted tuples may be placed in sub-optimal locations in this